day11 物件,原型,原型鏈

2021-08-29 07:57:20 字數 2223 閱讀 9330

物件

物件的建立方法

var obj={}建構函式–首字母大寫(大駝峰)

1)系統自帶函式object()–首字母大寫(大駝峰)

var student = new object();

student.name = "liudehua";

student.age = "20";

這樣一來,student物件就建立好了。

new student 產生乙個新的物件(外形相同實為兩人)。

2)function car(color) var car=new car("red"); var car1=new car();

這是另一種較為簡單的建立方式。

建構函式的內部原理(new)

(1)在函式體最前面隱式加上this={}

(2)執行this.***=***;

(3)隱式的返回this

原型prototype

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

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

person.prototype.lastname="abc";

person.prototype.name="bmw";

function person(name,age,***)

var person=new person();

此時person.lastname=abc。

可見,person身上並沒有lastname屬性,而從其原型prototype上找,並拿來引用。所以我們可以推斷出:原型在函式定義的時候就已存在。

我們可以通過修改原型的屬性來簡化我們的**及工作量。

car.prototype=

function car(color,owner)

var car=new car('red','wang');

var car1=new car('green','li');

將共有屬性放入原型中,新的物件中,自身找不到屬性,則會從原型中取,符合工廠模式。

proto(是乙個隱藏的屬性,用來存放原型)

上方講到建立物件new object會在函式體最前面**的加上this{}。這看似是乙個空物件,其實裡面放的就是__proto__:person.prototype

來看一組**:

person.prototype.name='abc';

function person()

var obj=

var person=new person();

//此時person.name=abc,

person.__proto__=obj;

//此時person.name="sunny" 被改

}

再看一組:

person.prototype.name="sunny";

function person()

var person=new person();

person.prototype.name="mike"

console.log(person.name);//mike prototype被更改

person.prototype=

console.log(person.name);//cherry

原型鏈

簡單理解就是原型組成的鏈,物件的__proto__它的是原型,而原型也是乙個物件,也有__proto__屬性,原型的__proto__又是原型的原型,就這樣可以一直通過__proto__想上找,這就是原型鏈。

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

反例object.create 。object.create(原型) 原型只能放object或null。

var obj=;

var obj1=object.create(obj)

console.log(obj1.name)----"sunny"

——在努力,再努力

JS原型物件,原型鏈

js中建立物件都是通過建構函式建立的,所以每個物件中都有乙個指向其建構函式的指標constructor var obj new object var arr new array var obj2 字面量建立實質上是上面方式的簡寫 var arr2 var str new string test 建立...

物件 原型與原型鏈

object.definepropertylet obj object.defineproperty obj,key1 console.log object.getownpropertydescriptor obj,key0 console.log object.getownpropertydesc...

原型物件和原型鏈

基本型別 string number boolean null undefined object 引用型別 string number boolean object function array date regexp error 引用型別都是物件 建立物件的同時會自動建立乙個名稱叫做 proto ...