JS中的原型与函数

JS中的原型与函数

  1. 原型的概念类似于Java中的“父类”
  2. JS中每个对象都有__proto__属性,指向该对象的原型
  3. o1.proto.proto(省略n个.proto),称作原型链
  4. 检索对象属性时,如果找不到会检索该对象的原型链
  5. 每个函数都有prototype属性,存放函数constructor等信息
    function AnyFunction() {}
    // 通常情况下,函数prototype的constructor指向函数本身
    console.log(AnyFunction.prototype.constructor === AnyFunction);
    
  6. 由2知,如果要使得某个对象o1由函数func1“构造”(即func1是该o1的原型),只要执行o1.proto= func1.prototype,举个例子
    // “构造”函数
    function AnyFunction() {
        this.do = function (params) {
            console.log('do');
        }
    }
    var o1 = {};
    // 使用o1的作用域执行“构造”函数
    AnyFunction.apply(o1);
    // 修改原型关系
    o1.__proto__ = AnyFunction.prototype;
    // 也可以直接使用new来“构造”
    // var o1 = new AnyFunction();
    // 调用“类型”AnyFunction的do方法
    o1.do();
    // 检查o1是否是AnyFunction的“实例”
    console.log(o1 instanceof AnyFunction);
    
  7. 由4知,如果要使得某个对象o1“继承”自对象o2(即o2是o1的原型),只要执行o1.proto = o2,举个例子:
    var o1 = {a:1};
    var o2 = {};
    o2.__proto__ = o1;
    
    console.log(o2.a)
    

你可能感兴趣的:(js)