1、typeof null == 「object」 ,所以不能通過typeof ~ == "object",判斷為物件 ; a、判斷為null的,直接~ === null;b、判斷物件(~ && typeof ~ == "object"),因為null為假
2、prototype和__proto__的概念
prototype是函式的乙個屬性(每個函式都有乙個prototype屬性),這個屬性是乙個指標,指向乙個物件。它是顯示修改物件的原型的屬性。
__proto__是乙個物件擁有的內建屬性(請注意:prototype是函式的內建屬性,__proto__是物件的內建屬性)
var a ={};a.n = 3
; a.__proto__.n = 4
; console.log(a.n)
3、new 的過程
var person = function(){};var p = new person();
new的過程拆分成以下三步:
(1) var p={}; 也就是說,初始化乙個物件p
(2) p.__proto__ = person.prototype;
(3) person.call(p); 也就是說構造p,也可以稱之為初始化p
var b =function ()b.prototype.n =function ()
var c = new
b();
console.log(c.__proto__ === b.prototype)
js語言精粹 繼承
當乙個函式物件被建立時,function構造器產生的函式物件會執行類似這樣的 this.prototype 當採用構造器呼叫模式,即使用new字首去呼叫乙個函式時,這將修改函式執行的方式。如果new運算子是乙個方法而不是乙個運算子,它可能會像這樣執行 function.method new func...
讀js語言精粹收穫
1.js可以根據選擇跳出多層迴圈 在迴圈前加個標籤 label for var i 0 i 2 i 2.typeof運算子產生的值只有 number undefined string boolean es5的基礎資料型別少了乙個null function object 注 array和null結果都...
js語言精粹之值和引用
var a 2 varb a b是a的乙個副本 b a 2b 3 基本資料型別是值複製 varc 1,2,3,4 var d c d是 1,2,3,4 的乙個引用 d.push 5 c 1,2,3,4,5 d 1,2,3,4,5 復合型別是引用複製 c和d分別指向乙個 1,2,3,4 的兩個不同的引...