zoukankan      html  css  js  c++  java
  • Javascript的构造函数和constructor属性

    原型链


    function
    Foo() {
    this.value = 42;
    }
    Foo.prototype = {
    method: function() {}
    };

    function Bar() {}

    // 设置Bar的prototype属性为Foo的实例对象
    Bar.prototype = new Foo();
    Bar.prototype.foo = 'Hello World';

    // 修正Bar.prototype.constructor为Bar本身
    Bar.prototype.constructor = Bar;

    var test = new Bar() // 创建Bar的一个新实例

    // 原型链
    test [Bar的实例]
    Bar.prototype [Foo的实例]
    { foo: 'Hello World' }
    Foo.prototype
    {method: ...};
    Object.prototype
    {toString: ... /* etc. */};
    为何要设置Bar.prototype.constructor = Bar;因为每一个对象(函数的prototype也是一个对象)都有一个constructor属性,这个属性指向构造这个对象的函数,因此假如不加上这句的话Bar.prototype.constructor指向的是Foo,而不是Bar本身一个对象的constructor是它的构造函数的prototype.constructor,而每一个函数都有一个prototype,默认情况下,这个prototype有一个constructor属性,指向的是它自己
    参考:
    http://www.cnblogs.com/yinzixin/archive/2010/01/09/1642913.html
    http://www.cnblogs.com/TomXu/archive/2012/01/05/2305453.html
  • 相关阅读:
    Web框架&&django介绍
    bootstrap
    jQuery
    js Bom和Dom
    javascript
    css
    二分查找
    php常用函数
    基于laravel自定义测试组件
    Document
  • 原文地址:https://www.cnblogs.com/2010navy/p/3332872.html
Copyright © 2011-2022 走看看