原型,原型鏈,call apply

2021-08-20 19:16:21 字數 2770 閱讀 6013

原型prototype    ---祖先

1.定義:原型是function物件的乙個屬性,它定義了建構函式製造出的物件的公共祖先。通過該建構函式產生的物件,可以繼承該原型的屬性和方法。原型也是物件。

2.利用原型特點和概念,可以提取共有屬性。

3.物件如何檢視原型-->隱式屬性__proto__,指向原型

4.物件如何檢視物件的建構函式-->原型裡的隱式屬性constructor 構造器

--祖先

= {} 原型

//原型和隱式屬性constructor __proto__ 的屬性都可以手動更改

person.prototype.name = 'sunny';

function person()

}var person = new person();

person.prototype =

//寫在new後面,此時的person.name是"sunny"

//var obj = ;

//var obj1 = obj;

//obj = ;

person.prototype = ;

__proto__ = person.prototype;

person.prototype = ;

原型鏈

1.如何構成原型鏈?

2.原型鏈上屬性的增刪改查

3.絕大多數物件的最終都會繼承自 object.prototype

4.object.create(原型);

sayname裡面的this指向是,誰呼叫的這個方法,this就指向誰

.__proto__ = object.prototype//所有物件的最終原型

person.prototype =

}function person()

var person = new person();

console.log(person.sayname());//b

console.log(person.prototype.sayname());//a

//var obj = object.create(原型);

var obj = ;

var obj1 = object.create(obj);

//obj1的原型就是obj

person.prototype.name = "sunny";

function person()

var person = object.create(person.prototype);

//person的原型就是person.prototype

構造了乙個沒有原型的物件,沒有原型手動加原型屬性沒用

var num = 123;

--> new number(num).tostring();

number.prototype.tostring = function()

// number.prototype.__proto__ = object.prototype

// object.prototype.tostring = function()

// 同樣的名字,不同的功能被覆蓋,就叫做重寫

// object.prototype自帶tostring方法

// object.prototype.tostring = function()

person.prototype =

}function person()

var person = new person();

//此處重寫了object的tostring,訪問 person.tostring 返回 'hehe'

var obj = object.create(null);

obj.tostring = function()

document.write(obj);

//呼叫沒有原型的obj,手動給obj加tostring方法,return 'abc',列印obj返回'abc'

小知識點

小bug 0.14*100 = 14.000000000000002,小數點計算時,計算不精準

math. ceil(123.234)向上取整math.ceil(x)返回大於引數x的最小整數,即對浮點數向上取整

math. floor(123.234)向下取整

math. random()產生0到1之間的隨機數

tofixed(2)保留2位小數,並且四捨五入

js可正常計算數字前16位後16位

for(var i = 0; i < 10; i++) 

//先乘以一百,再取整,產生十個0到100的隨機整數

1.作用,改變this指向。

2.區別,後面的引數形式不同。

function person(name,age)

var person = new person('deng' , 100);

var obj = {}

person.call(obj, 'cheng', 300);//改變this為call的第乙個引數,把 person裡面的this都換成了obj

// test(); ==> test.call();

call apply 原型 原型鏈

call需要把實參按照形參的個數傳遞進去 改變this指向 傳參不同 原型 1.函式物件有 proto 和prototype屬性 2.非函式物件只有 proto 屬性 3.prototype中有 proto 屬性,是object構造出來的 4.函式物件 proto 指向它的建立者及function建...

js原型,原型鏈,call apply

目錄 1.prototype原型 2.proto 2.1常見錯誤 3.原型鏈 3.1 object.prototype是大部分物件的最終原型 3.2 object.create 定義 原型是function物件的乙個屬性,它定義了建構函式製造出來的物件的公共祖先,通過該建構函式產生的物件,可以繼承該...

原型 原型鏈

var animal function var dog function animal.price 2000 dog.prototype animal var tidy new dog console.log dog.price 為什麼輸出 undefined console.log tidy.pr...