1. 读写
1.1 查询
读取对象属性:
1 step : 对象实例有吗?
2 step : 原型对象有吗?
3 step : 都无,undefined
1.2 写
1.2.1 值类型
实例对象没有该属性,原型对象有。拷贝一份到实例对象再修改,原型对象不变。
function Flower(){};
Flower.prototype = {
constructor:Flower,
num:1,
talk: function (){
console.info("I am a Flower");
}
}
var f1 = new Flower();
// f1.num=2; 修改
console.info(f1);
1.2.2 引用类型
实例有则修改end。无则修改原型对象end,都无异常反馈end。
1.2.3 方法
和值类型一样,不会修改对象原型,拷贝一份到对象实例再修改。
function Flower(){};
Flower.prototype = {
constructor:Flower,
talk: function(){
console.info("I am a Flower");
}
}
var f1 = new Flower();
/* f1.talk=function(){
console.info("I am a cat");
}*/
console.info(f1);
f1.talk();
2. 不建议共享对象数组
修改的是原型对象,不会拷贝到实例。共享建议是一些不会修改的数据,或修改会拷贝到实例再修改的属性。反之,午夜 debug …
3. 建议
- 私有成员(一般就是非函数成员)放到构造函数中
- 共享成员(一般就是函数)放到原型对象中
- 如果重置了
prototype
记得修正constructor
的指向