回覆列表
-
1 # 你看我獨角獸嗎
-
2 # 偶爾來逛逛隨便來瞧瞧
如果你對面向物件有概念,那你應該知道js中一切皆是object,js中的物件都由object派生,換言之,無論number,string還是函式,都是具體型別的object
-
3 # 紅塵匆匆過客夢
javascript物件包括:字串、數值、陣列、函式...等等,javascript內建物件Object是派生所有其它物件的物件(透過prototype原型鏈),其屬性和方法可以派生給所有其它物件,包括屬性constructor(建構函式)和prototype(指向共享的原型物件),方法toString(把物件轉換為字串)和valueOf(獲得物件的原始值)
為什麼我總喜歡回答這種冷門話題。。先回答題主的疑惑,我們先了解下JavaScript prototype的定義和用法,prototype的定義是使您有能力向物件新增屬性和方法。簡單的語法為
object.prototype.name=value那麼a是一個TestClass物件例項,那麼根據上面應該很容易回答了,a是物件例項,不是物件,prototype不會給物件例項提供新增屬性和方法的能力。
那麼我們來看下Object在JavaScript中的使用吧,雖然一般而言平時會用Object去儲存資料,不會用什麼功能,不過Object實際上還是比較強大的,尤其在ES5之後。
建立物件new建構函式法
這不用解釋了吧,加上new關鍵字和Object建構函式,新增屬性後我們就可以儲存資料。
物件字面量
這個也很好理解,使用字典方式直接建立物件,很簡單。不過有點要注意的是,如果是最後一個屬性,最好不要加逗號,畢竟有些瀏覽器下會報錯。
常用的物件例項的屬性和方法toString()方法
toString用來返回物件的字串表示。
valueOf()方法
valueOf方法返回物件的原始值,可能是字串、數值等。
constructor屬性
constructor屬性是儲存當前物件的建構函式。
hasOwnProperty(propertyName)方法
hasOwnProperty方法接收一個字串引數,該引數表示屬性名稱,用來判斷該屬性是否在當前物件例項中。
以上還有很多其他的方法和屬性未提及到,我平常開發中Object也是最經常使用的物件,現在從ES5的發展來看,Object的功能已經強大了很多,我看網上的教程也挺複雜,這主要是因為js本身沒有完整的面向物件和自定義型別支援有關係,雖然ES6已經很盡力了。