原型
prototype就是“原型”的意思婚苹。每個函數(shù)都有原型硕蛹,原型是一個對象醇疼。
找原型對象有2個辦法:
- 構(gòu)造函數(shù)名.prototype
- 對象名.proto
原型的應(yīng)用
在 Array中 新增1個方法 boomXXX, 可以往里面壓入1個元素
Array.prototype.boomXXX = function(a) {
// this 就是調(diào)用此函數(shù)的 那個數(shù)組對象
this.push(a)
}
var arr = [1, 2, 3];
arr.boomXXX(4);
// 1,2,3,4 +
console.log(arr);
在 Array 中 新增1個方法 dz, 作用:調(diào)轉(zhuǎn) 第1個元素 與 最后1個元素
例如: a = [1,2,3,4];
a.dz();
console.log(a); // 4,2,3,1
Array.prototype.dz = function() {
// 取出第1個元素, 因為this相當(dāng)于是調(diào)用的對象
var a = this[0];
var b = this[this.length-1];
// 倒轉(zhuǎn)
this[0] = b;
this[this.length-1] = a;
}
var a = [1,2,3,4]
a.dz()
console.log(a);
繼承
繼承父類的東西,并且可以增加自己的東西
屬性 父類.call(this, 參數(shù)列表)
方法 子類.prototype = new 父類();
// 動物類
function Animal()
{
this.name = "動物";
this.color = "黃色"
}
Animal.prototype.run = function() {
console.log("跑跑跑")
}
// 因為狗和動物有大部分代碼是重復(fù)的
function Dog()
{
this.nose = "大鼻子";
}
// 設(shè)置狗的原型對象為 動物法焰,相當(dāng)于 狗 繼承了 動物的所有屬性和方法
// 通過這條語句秧荆,可以實現(xiàn)讓 狗 繼承了 動物中的 所有屬性和方法
Dog.prototype = new Animal();
var dog1 = new Dog();
dog1.run();
對象冒充
function Cat(n) {
this.name = n;
}
var obj = {};
// obj 替代里面的this, 稱為 對象冒充
Cat.call(obj, "貓貓");
// 貓貓
console.log(obj.name);