《JavaScript語言精粹》讀書筆記

第三章:對象

//1.定義一個方法 method
Function .prototype.method=function(name, func){  
  
              this.prototype[name]=func;  
  
              return this;  
}  
    
//2.給Object增長一個create方法,這個方法建立一個使用原對象做爲其原型的新對象  
  
Object.create=function(o){  
  
       var F=function(){};  
  
       F.prototype=o;  
  
       return new F();  
  
}    
  
//繼承  
  
Function.method(‘inherits’, function(Parent){  
  
       this.prototype=new Parent();  
 
       return this;   
});

1)JS中的對象是name/value對的集合並擁有一個連到原型對象的隱藏鏈接。
2)對象字面量產生的對象鏈接到Object.prototype;
3)引用:對象經過引用來傳遞,他們永遠不會被複制。
4)函數就是對象。
5)函數對象鏈接到Function.prototype(該原型的對象自己鏈接到Object.prototype)。
6)函數在建立的時候會附加2個隱藏屬性:函數的上下文(包括函數實參、函數形參、內嵌函數、內部變量等)和實現函數行爲的代碼
Objectjavascript

  1. proto: Object
  2. constructor: function Object() { [native code] }
  3. hasOwnProperty: function hasOwnProperty() { [native code] }
  4. isPrototypeOf: function isPrototypeOf() { [native code] }
  5. propertyIsEnumerable: function propertyIsEnumerable() { [native code] }
  6. toLocaleString: function toLocaleString() { [native code] }
  7. toString: function toString() { [native code] }
  8. valueOf: function valueOf() { [native code] }

反射

檢查對象並肯定對象有什麼屬性是很容易的事情,只要試着去檢索該屬性並驗證取得的值,typeof操做符對肯定屬性的類型頗有幫助。
1)檢查屬性的類型:typeofjava

typeof flight.number    //'number'
typeof flight.status    //'string'
typeof flight.manifest  //'undefined'

請注意原型鏈中的任何屬性也會產生一個值:數組

typeof flight.toString     //'function'
typeof flight.constructor  //'function'

2)檢查屬性:hasOwnPropertyapp

flight.hasOwnProperty('number')       //true
flight.hasOwnProperty('constructor') //false

第四章:函數

1)除了聲明時定義的形式參數,每一個函數還接收2個附加的參數:this和arguments
2)一個函數總會返回一個值,若是沒有指定返回值,則返回undefined。若是函數調用時在前面加上了new前綴,且返回值不是一個對象,則返回this。
函數字面量:能夠經過函數字面量來建立:
包括4個部分:
1函數

//建立一個名爲add變量,並用來把兩個數字相加的函數賦值給它
var add=function(a,b){
return a+b;
}

【this】

this在JS中有4中調用模式:
①方法調用模式:當一個函數被保存爲對象的一個屬性時,就稱它是一個方法。當一個方法被調用時,this被綁定到該對象。
②函數調用模式:當一個函數並不是一個對象的屬性時,它就是被當作一個函數來調用。這個模式下的this被綁定到全局對象window,函數實際是window的屬性。
③構造器調用模式:若是在一個函數前面帶上new來調用,則背地裏會建立一個連到該函數prototytpe成員的新對象,同時this會被綁定到那個新對象上。
④apply調用模式:容許選擇this的值,apply第一個參數綁定給this的值,第2個參數是傳給調用函數的參數數組。this

第五章:繼承

繼承的兩個做用:一、代碼重用;二、類型系統規範。prototype

當一個函數對象唄建立時,Functinon構造器產生的函數對象會運行相似下面的代碼:code

this.prototype={constructor:this};

新函數對象被賦予一個prototype屬性,其值是包含一個constructor屬性且屬性值爲該新函數的對象。該prototype對象是存放繼承特徵的地方。對象

相關文章
相關標籤/搜索