參考ecmascript5
屬性有2種,資料屬性和訪問器屬性。
資料屬性:
擁有4個特性:
configurable 表示能否通過delete刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問器屬性。預設為true,如果將其設定為false,則不能再變回true了,除了writable特性可以設定以外,其餘都不可設定
enumerable 表示能修改通過for-in迴圈返回屬性。預設為true
writable 表示能否修改屬性的值。預設為true
value 包含這個屬性的資料值。預設為underfined
這4個特性是內部值,不能直接訪問,只能使用object.defineproperty()方法進行修改。
eg:object.defineproperty(obj,key,);
如果在使用其建立新屬性時不指定特性值,則預設值都是false,如果是修改已定義的則無此限制
訪問器屬性:
訪問器屬性不包含資料值,它們包含一對getter和setter函式,擁有以下4個特性:
前2個特性是一樣的,之後的2個特性為get和set
訪問器屬性不能直接定義,必須使用object.defineproperty建立訪問器屬性。
可以使用object.defineproperties(obj,json)來建立多個屬性
我們知道vue有個很好用的特性,即資料雙向繫結,這裡我試著編寫了乙個簡單的具有雙向繫結特性的建構函式:
function cl(obj) catch (err)if(typeof obj.data == 'function') else
if(this.data)
this.target.innerhtml = formatstring(this.template,this)
object.freeze(this)
}function formatstring(str,data) \}','g'),(match,$1)=>else
})}function setobject(obj,this) ,
[key]:,
set(newval)}})
}}
後續會對這段**進行解釋,寫的比較隨意,如有錯誤請指正。
js中基本型別以及 和 說明
1 js資料型別型別 1 五種基本型別分別為 string型別 字串型別 number 型別 數值型別 數值和 nan boolean型別 布林型別 只有true和false兩個值。null 空 undefined 未定義 2 一種複雜資料型別 object型別 物件型別 2 用typeof操作符檢...
Vue 指令的基本原理(可能)
const object1 object.defineproperty object1,property1 object1.property1 77 throws an error in strict mode 嚴格模式下錯誤console.log object1.property1 expecte...
關於js中的堆和棧以及基本型別和引用型別的理解。
堆 heap 和棧 stack 棧 stack 會自動分配記憶體空間,會自動釋放。堆 heap 動態分配的記憶體,大小不定也不會自動釋放。基本型別 基本資料型別包括undefined,string,boolean,null,number,存放在棧記憶體中,佔據固定大小的空間。引用型別 引用型別 指那...