Object.defineProperty()
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
例
20170605131424.png
声明一个空对象a , 给a定义一个属性prop , 赋值 1
.
20170605181133.png
writable确定是否可以修改属性,设置false后 , 不得修改属性 , 上图赋值2,结果还是1
.
20170605201246.png
enumerable设置这个属性不能遍历
如何定义多个
工厂模式
function 对象(a,b,c){
var obj = new Object()
obj.name = a
obj.age = b
obj.job = c
obj.sayName = function(){
alert(this.name)
}
return obj
}
var 我 = 对象('Tom',18,'Web')
这就是工厂模式
new
1.帮你创造临时对象
2.帮你绑定原型
3.不用return临时对象
4.原型的名字固定叫prototype
构造函数模式
代码前面加上 new 就是
为了与普通函数区别,构造函数名字的第一个字母通常大写
20170607120235.png
function Aa(b,c){
if(this instanceof Aa === false){ //如果不是new,我就返回new
return new Aa(b,c)
}
this.name = b
}
constructor
new 统一的原型,是protoype , 默认有 constructor 属性