原因:1、ie8及以下版本不支援Object.defineProperty方法,但這個是vue實作響應式的所必須的,所以從Vue的源碼來看根本就無法支援IE8;2、Vue需要支持Promise的支持,IE8不支援Promsie。
在從Vue官網路上看為什麼不支援IE8
Vue.js會對所有的實作雙向綁定的數據,使用Object.defineProperty 把這些屬性全部轉為getter/setter。 Object.defineProperty 是 ES5 中一個無法 shim 的特性,這就是為什麼 Vue 不支援 IE8 以及更低版本瀏覽器的原因。
注意這裡:Object.defineProperty是無法透過墊板實現的一個方法,是和瀏覽器本身有關係的,所以Vue從根本上來說本來就無法支援IE8;
Vue 不支援IE8 及以下版本,因為Vue 使用了IE8 無法模擬的ECMAScript 5 特性。但它支援所有相容 ECMAScript 5 的瀏覽器
且,Vue需要支援Promise的支持,IE8同樣不支援Promsie。
擴充資料:
Object.defineProperty()
此方法允許精確新增或修改物件的屬性。一般情況下,我們為物件新增屬性是透過賦值來建立並顯示在屬性枚舉中(for…in 或 Object.keys 方法),但這種方式新增的屬性值可以被改變,也可以被刪除。而使用 Object.defineProperty() 則允許改變這些額外細節的預設值。例如,預設情況下,使用 Object.defineProperty() 增加的屬性值是不可變更的。
在vue 原始碼中搜尋「Object.defineProperty」 :
#可以看到有5 個符合的地方,也就是說vue 中有5 個使用了「Object.defineProperty()」。
搜尋的版本是: Vue.js v1.0.26
Object.defineProperty()的瀏覽器支援情況:
可以看出支持情況是IE9 以上。
相關推薦:
更多程式相關知識,請造訪:程式設計教學! !
以上是vue.js為什麼不能支援ie8?的詳細內容。更多資訊請關注PHP中文網其他相關文章!