原型知多少

2021-09-11 12:38:14 字數 1474 閱讀 8131

除了undefind,number,string,boolean是簡單的值型別,其他的null,object,function都是物件

函式有prototype屬性,它是物件,是函式屬性和方法的集合

每個物件都有乙個__proto__屬性(隱式原型),它指向建立這個物件的函式的原型

函式也是一種物件:object()函式是new function()建立的,所以他的__proto__也指向fuction.prototype

建構函式模式

function person(name,age)

}複製**

原型模式

person.prototype.name="huangbin";

person.prototype.sayname = function()

var person1 = new person();

person1.sayname();//huangbin

var person2 = new person();

alert(person1.sayname==person2.sayname)//true```

複製**

[[prototype]]指標指向建構函式的原型物件,在firefox、safari、chrome中有**__proto__屬性可以訪問它**

person.prototype.constructor指向person

person.prototype.isprototypeof(person1)是判斷某個建構函式的原型物件是不是例項物件指向的

object.getprototypeof():是返回例項物件的指向建構函式原型的指標([[prototype]])

person.hasownproperty("name")是判斷屬性是否來自例項

要獲取物件中可列舉的屬性,可使用object.keys(obj)方法

想要獲得所有例項的屬性,無論是否可列舉,object.getownpropertynames(obj)

當使用for-in獲取物件列舉屬性時要用hasownproperty來判斷:判斷屬性是否存在當前物件中,而不是原型物件中,當在類或者建構函式中沒把屬性指定到this上,那麼該屬性就會自動掛載到原型物件上

es6中的class寫法會導致屬性不可列舉object.keys

a instanceof b: obj是否在建構函式的原型鏈上,a沿著_proto_、b沿著prototype如果能指向乙個物件,就返回true 1.

關於函式中的this

var obj1=);

} f(); }}

obj1.fn();

複製**

關於變數提公升

原型鏈: 訪問乙個物件的屬性時,如果在基本屬性中找不到,就會沿著_prototype_這條原型鏈去找

閘道器知多少

閘道器 gateway 顧名思義,就是乙個網路到另乙個網路的關口。維基百科對閘道器的定義為 在計算機網路中,閘道器 gateway 是 其他伺服器通訊資料的伺服器,接收從客戶端傳送來的請求時,它就像自己擁有資源的源伺服器一樣對請求進行處理。但是,很多時候,我們會將路由器和閘道器認為是同乙個概念。其實...

遍歷知多少

語法 for var arr 1,2,3 for var i 0 i arr.length i for.of.for var i of arr for.in.for var i in arr foreach arr.foreach item,index,arr map arr.map value,i...

軟體文件知多少?

如今,軟體開發越來越複雜,軟體功能也越來越豐富。而幾乎所有成熟的商業軟體,都是靠乙個開發團隊齊心協力的血汗結晶。羅馬不是一天建成的!當我們震撼於microsoft windows的驚世巨著的同時,也道聽途說了微軟公司軟體工程是如何的完善規範。的確,集數百名員工幾年的共同努力之大成,軟體專案管理的成敗...