原型
物件会有自己的属性
原型也是
实体可以继承原型,原型也可以继承原型
所以继承可以一段一段向上继承,这种继承方式称为原型练
一个原型新增两个实体
这两个实体会共用原型的方法
原型特性
var a = [1,2,3];
console.log(a);
a的原型 (点开proto) 会是阵列原型
可以看到阵列原型有一个 forEach 方法
当然 实体也可以透过向上查找使用此方法
var a = [1,2,3];
a.forEach(function(i){
console.log(i);
})
再来我们来证明 原型可共用方法与属性
var a = [1,2,3];
var b = [4,5,6];
// 这里 __proto__ 并非正式写法
a.__proto__.getLast = function(){
return this[this.length-1];
}
console.log(a.getLast()); // 3
console.log(b.getLast()); // 6
这里我们再来看阵列原型上一层是什麽
会发现还有一个 物件原型
我们在物件原型下新增方法,阵列实体也能透过向上查找使用此方法
var a = [1,2,3];
var b = [4,5,6];
var family = {
nickname: '皮杰先生'
}
family.__proto__.getName = function(){
return this.nickname;
}
console.log(family.getName());
a.nickname = '阵列属性';
console.log(a); // 这里要注意 阵列长度并不会改变
console.log(a.getName());
使用建构式自定义原型
function Dog(nickname , color , size){
this.nickname = nickname;
this.color = color;
this.size = size;
}
var black = new Dog('小黑','黑色','大'); // 这里新产生的物件 会把 Dog 作为原型
var white = new Dog('小白','白色','小'); // 这里新产生的物件 会把 Dog 作为原型
console.dir(Dog); // 会看到有 proyotype属性 (函式特有属性)
Dog.prototype.bark = function(){
console.log(this.nickname + '吠叫');
}
console.log(black , white);
black.bark();
white.bark();
// proto 物件上
// prototype 函式上
// 若要在原型上新增方法 最好从它的建构函式去新增
console.log(black.__proto__ === Dog.prototype); // true
那今天的介绍就到这里
若有任何问题 或 内容有误
都可以跟我说唷
大家好,GraphQL 是一个可以让 Client 弹性要求资料的技术,本文章将介绍Apollo S...
上次介绍完前面两个修饰符,今天就来把它学习完吧!!! .stop .prevent .capture...
前面10天测试完大概的API功能後, 今天本来要开始建立API方法, 但用Anaconda建置API...
每个人都有自己的人生经验,本篇文章是从笔者的角度出发,希望可以给读者带来不同的视角与观点。 从第二...
Hashicorp Nomad: resources 在Kubernets的 Quality of ...