JavaScript原型オブジェクト(一)

1819 ワード

対象に向けた思想では、共通の、抽象的な属性と方法を抽出し、基質としてサブクラスがこの基質を継承し、これらの属性と方法を継承する.Javascript関数はオブジェクトであり、各関数は非依存性の属性prototypeを継承し、prototypeはオブジェクトである.JavaScriptでは、prototype属性によって同様の役割が達成されうる.すべてのインスタンスオブジェクト共有の属性および方法を定義する.
function Person(name, gender) {
    this.name = name;
    this.gender = gender;
    this.sayHello = function() {
        console.log('Hello,I am', this.name, '. I\'m a', this.gender);
    };
}

var zs = new Person('zhang san', 'male'),
    xh = new Person('xiao hong', 'female');

zs.sayHello(); // Hello,I am zhang san . I'm a male
xh.sayHello(); // Hello,I am xiao hong . I'm a female

zs.sayHello === xh.sayHello;  // false

上記コードにおいて、zs.sayHellおよびxh.sayHelloは2つの独立したオブジェクトである.
function Person(name, gender) {
    this.name = name;
    this.gender = gender;
}
Person.prototype.sayHello = function() {
    console.log('Hello,I am', this.name, '. I\'m a', this.gender);
};

var zs = new Person('zhang san', 'male'),
    xh = new Person('xiao hong', 'female');

zs.sayHello(); // Hello,I am zhang san . I'm a male
xh.sayHello(); // Hello,I am xiao hong . I'm a female

zs.sayHello === xh.sayHello;  // true
_proto_:現在のオブジェクトを指すプロトタイプの属性です.constructor:このprototypeのオブジェクトを指すコンストラクタは、この属性により、このオブジェクトがどのコンストラクタによって生成されたかを判断することができる.)zsおよびxhの2つの構成関数によって生成されるオブジェクトは、PersonPerson属性にアクセスできるので、prototypeの下のprototype方法を定義し、sayHelloの例示的なオブジェクトはいずれもアクセスできる.
参照リンクhttp://www.jianshu.com/p/1160d65ce3c3 http://javascript.ruanyifeng.com/oop/prototype.html#toc3