javascript: prototype

[ 作者:byeyear    Email:[email protected]    转载请注明 ]

古希腊有哲学家认为,在那遥远的虚无之处,人类目光所不能及的地方,有一匹原型马,世间万马皆依此而生。我们有构造函数horse()用于从原型马构造一匹我们能看到、触摸到、骑到的马:

function horse()
{
    this.color = 'red';
    this.height = 80;
    this.length = 160;
}
// Now, if you want, you can construct your own horse.
// var myHorse = new horse();

可以从该构造函数访问原型马:

console.log(horse.prototype);

老子说过,一生二,二生三,三生万物。我们的原型马生自Object:

console.log(horse.prototype.__proto__);
>constructor: ƒ Object() >hasOwnProperty: ƒ hasOwnProperty() >isPrototypeOf: ƒ isPrototypeOf() >propertyIsEnumerable: ƒ propertyIsEnumerable() >toLocaleString: ƒ toLocaleString() >toString: ƒ toString() >valueOf: ƒ valueOf() >__defineGetter__: ƒ __defineGetter__() >__defineSetter__: ƒ __defineSetter__() >__lookupGetter__: ƒ __lookupGetter__() >__lookupSetter__: ƒ __lookupSetter__() >get __proto__: ƒ __proto__() >set __proto__: ƒ __proto__()

在原型马上新定义的方法可被早先构建的现实马所用:

var myHorse = new horse();
horse.prototype.run = function() {alert('I am running.'); }
myHorse.run();

 我们的马可骑,有自己的名字,黑色:

myHorse.color = 'black';
myHorse.name = 'Lili';
myHorse.ride = function() { alert('Ride me.'); }

 原型马的运行自有其内在机理,那是不能被凡人所理解的奥秘(?):

// myHorse无法调用secret()函数
horse.secret = function() { alert('This is a secret.'); }

猜你喜欢

转载自www.cnblogs.com/byeyear/p/10274312.html