JS 原型(prototype) DAY66

原型
物件会有自己的属性
原型也是
实体可以继承原型,原型也可以继承原型
所以继承可以一段一段向上继承,这种继承方式称为原型练
http://img2.58codes.com/2024/20123039uG6e3A55tx.jpg

一个原型新增两个实体
这两个实体会共用原型的方法
http://img2.58codes.com/2024/20123039c5JKG7u34i.jpg

原型特性

一样具有物件的特性向上查找原型可共用方法与属性
var a = [1,2,3];console.log(a);

a的原型 (点开proto) 会是阵列原型
http://img2.58codes.com/2024/20123039HF1nFTyQAu.png

可以看到阵列原型有一个 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()); // 3console.log(b.getLast()); // 6

这里我们再来看阵列原型上一层是什么
会发现还有一个 物件原型
http://img2.58codes.com/2024/20123039gJIjUcCIUB.jpg

我们在物件原型下新增方法,阵列实体也能透过向上查找使用此方法

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

那今天的介绍就到这里
若有任何问题 或 内容有误
都可以跟我说唷http://img2.58codes.com/2024/emoticon41.gif


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章