分享

javascript 面向对象(对象的创建方式ES3)

 昵称11935121 2018-04-07
  1. 对象的四个重要数据属性

var person={};

Object.defineProperty(person,'name',{

configurable:false, //不可删除 delete person.name;

value:'tao', //值

writable:false, //不可编辑的

Enumberable:false,//不可for in 循环

});

javascript 面向对象(对象的创建方式ES3)

2.对象的创建方式

1.工厂模式

function createPerson(name,age){

var obj = {};

obj.name=name;

obj.age=age;

obj.sayName= function(){

alert(this.name);

}

return obj;

}

2.构造函数

function Person(name,age){

this.name=name;

this.age=age;

this.sayName=function(){

alert(this.name);

}

}

问题:每个对象都会创建一个sayName 函数 过多的内存消耗

3.原型模式

function Person(){}

Person.prototype.name='tao';

Person.prototype.age=20;

Person.prototype.sayName=function(){alter(this.name)};

Person.prototype={

constructor:Person,//必须的

name:'xu',

age:20,

sayName:function(){alter(this.name)}

}

原型的问题:属性会被所有对象共享,修改其中一个 会导致其他的对象的

值被改变。

4.原型模式和构造函数相结合

function Person(){

this.name='tao';

this.age=20;

}

Person.prototype.sayName=function(){alert(this.name+this.age)}

5.动态原型模式

function Person(){

this.name='tao';

this.age=20;

if(typeof this.sayName !='function'){

Person.prototype.sayName= function(){

alert(this.name+this.age);

}

}

}

6.稳妥构造函数 将name设为private

function Person(){

var name=name;

this.sayName=function(){alert(name);};

this.setName=function(nameV){name=nameV;}

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多