Javascript構造函數學習

咱們常常會用JS的構造函數實現Java語言中的繼承,今天整理一下構造函數的相關屬性及說明。
下面定義一個構造函數:
function Person(name, sex, age) {
    this.name = name;
    this.sex = sex;
    this.age = age;
}

  

以上面這個構造函數爲例梳理一下構造函數的相關屬性,以下表:
屬性名
說明
__defineGetter__ 用於追加定義getter方法,繼承自Object
__defineSetter__
用於追加定義setter方法, 繼承自Object
__lookupGetter__
獲取getter屬性,ES5 getOwnPropertyDescriptor
__lookupSetter__
獲取setter屬性, getPrototypeOf
apply、call、bind
調用當前方法,以另外的對象替代當前對象
aguments
調用該函數時傳入的參數
caller
獲取調用當前函數的函數
length
獲取爲一個函數定義的參數數目
name
函數名稱
propertyIsEnumberabel
屬性是否可枚舉
prototype
輸出格式是構造函數名 原型
toLocaleString
轉化成本地化字符串
toString
轉化成字符串
valueOf
轉化成原始值(string number null undefined boolean)
__proto__
原型鏈:私有屬性(FF暴露爲共有屬性):實例化對象擁有該屬性
constructor
構造函數
 
經過上述實例理解主要屬性的使用:
//建立Person的原型
Person.prototype = {
  construtor: Person,
    sayHello: function() {
        alert('Hello');
    }
}
//實例化,能夠實例化多個對象
var danny = new Person('Danny', 'male', 18);
var jenny = new Person('Jenny', 'female', 24);
 
Person.prototype.isPrototypeOf(danny) //true,說明danny繼承了Person的屬性
danny .constructor //Person
Person.constructor //Function
 
var tom = {};
danny.sayHello.apply(tom); //tom也能使用danny的sayHello
 
danny.__proto__ == Person.prototype //__proto__ 能夠理解爲對象的父對象

  

 
想要了解更加詳細的講解,能夠查看參考資料的講解~
 
參考資料:
http://msdn.microsoft.com/zh-cn/library/x844tc74(v=vs.94).aspx
http://www.douban.com/note/293217333/
相關文章
相關標籤/搜索