prototype两种使用方法
Date.prototype={
tool1:function(){},
tool2:function(){}
}
Date.prototype.tool1 = function(){};
Date.prototype.tool2 = function(){};
prototype和proto
function FN(name){
this.name = name;
}
FN.prototype.getname = function(){
console.log(this.name);
}
f2.__proto__.getAge = function(){
console.log(666);
}
f2.tool = function(){alert(666);}
var f1 =new FN("xxxx");
f1.tool(); //f1没有tool方法
console.log(f1); //f1下的__proto__下也有getAge
var f2 =new FN("karen");
console.log(f2.__proto__);
- 对象的原型属性(proto)指向构造函数的原型(prototype)
- Es6中,由于类的方法都定义在prototype对象上面,所以类的新方法可以添加在prototype对象上面。
class B {}
let b = new B();
b.constructor === B.prototype.constructor // true
- 上面代码中,b是B类的实例,它的constructor方法就是B类原型的constructor方法。
class Point {
constructor() {
// ...
}
toString() {
// ...
}
toValue() {
// ...
}
}
// 等同于
Point.prototype = {
constructor() {},
toString() {},
toValue() {},
};