js 的几种面向对象的方式
2016-11-03 14:00
162 查看
1.对象的字面量
var obj = {};
2.创建实例对象
var obj = new Object(); obj.name = 'leon'; obj.age = '23'; obj.show = function(){ console.log(this.age); }
3.通过构造函数构造对象
function fn(name,age){ this.name = name; this.age = age; this.show = function(){ console.log(this.age); } } var men1 = new fn('leon','23'); var men2 = new fn('karen','22');
4.工厂模式
用一个函数,通过传递函数返回对象。function createfn(name,age){ var obj = new Object(); obj.name = name; obj.age = age; obj.show = function(){ console.log(this.age); } return obj; } createfn(leon,23);
这样可以一次创建多个不同的对象,但是需要注意的是,每个创建的对象都有不同的age属性,name属性,但是show在每个创建的对象的时候也会穿件一个新的方法模板,这样就会有点浪费内存了,可以这样改造一下。
function createfn(name,age){ var obj = new Object(); obj.name = name; obj.age = age; obj.show = showName; } return obj; } function showName(){ console.log(this.name); } createfn(leon,23);
5.原型模式
function person() {}; person.prototype.name = 'leon'; person.prototype.age = '23'; person.prototype.show = function(){ console.log(this.age); } var men = new person(); console.log(men.name)//leon console.log(men.age)//23
每个创建的person对象都会自动拥有age name 属性和show 方法而且 这种写法有一个好处就是解决了show重复创建的问题,但是两个新问题也随之而来,无法使用构造器传递参数,如person(23,"leon"),更要命的是如果属性是引用类型的所有创建的对象都会持有同一个引用 ,如何解决这个问题?
6.混合模式 (原型模式+构造器)
function person(name,age){ this.age = age; this.name = name; this.array = new Array(); } person.prototype.show =function(){ console.log(this.age); }
7.动态原型方法
function person(age,name){ this.age=age; this.name=name; if(typeof person._initialized=='undefined'){ person.prototype.showName=function(){ console.log(this.age); } person._initialized=true; } }
相关文章推荐
- js 面向对象的几种方式
- js面向对象的几种方式。
- JS面向对象二:js对象的几种创建方式
- JS面向对象的几种创建方式:工厂模式、构造函数模式、原型模式、混合模式、动态原型模式
- js中面向对象(创建对象的几种方式)
- js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
- JS面向对象之常见创建对象的几种方式
- js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
- js中面向对象(创建对象的几种方式)
- js实现页面跳转的几种方式
- js实现页面跳转的几种方式
- js实现页面跳转的几种方式
- js实现页面跳转的几种方式
- js实现页面跳转的几种方式
- js实现页面跳转的几种方式
- js实现页面跳转的几种方式
- js实现页面跳转的几种方式
- js实现页面跳转的几种方式
- js实现页面跳转的几种方式
- 蛙蛙推荐:JS里声明事件处理的几种方式