面向对象

Object.defineProperty()
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。

面向对象_第1张图片
20170605131424.png

声明一个空对象a , 给a定义一个属性prop , 赋值 1

.

面向对象_第2张图片
20170605181133.png

writable确定是否可以修改属性,设置false后 , 不得修改属性 , 上图赋值2,结果还是1

.

面向对象_第3张图片
20170605201246.png

enumerable设置这个属性不能遍历

如何定义多个

用Object.defineProperties()

工厂模式

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 属性

你可能感兴趣的:(面向对象)