原始值是如何調用屬性和方法的

//原始值是如何調用屬性和方法的

		let num = 123 ; 
		num.abc = 'abc' ;
		//調用屬性或者方法時先new一個對象,並且在new完之後進行銷燬
		//new Number(num).abc = 'abc' ; --> delete
		//


		//當要調用屬性或者方法的時候,會自動再new一次,
		//和上次new的不是同一個,所以會打印undefined
		//new Number(num)
		console.log(num.abc);

任何一個原型離開了構造函數都沒有意義,任何一個構造函數都會有一個屬性叫做(prototype),prototype都是所有構造函數的公有祖先,也就是說構造函數的所有原始屬性和原始方法都來自於prototype,舉個小栗子

Person.prototype.lastName = 'deng' ;
		function Person(){

			//下面是隱式變化
			//let this = {
			//		__proto__:Person.prototype
			// }
			
		}

		let person = new Person();
		console.log(person.lastName);
		/*
		在控制檯輸入delete num(或者delete window.num)會顯示false
		*/
		
		//但是在對象中的屬性值可以
		let obj = {
		}
		obj.name = "zhangsan";
		/*在控制檯輸入delete obj.name 時返回值是ture 但是delete obj時返回的是false,但是如果是直接在window上賦值,可以delete,因爲沒有經歷過var(let...)這樣的操作*/ 
		

一旦經歷過var(let…)之類的操作得到的屬性(也就是Window上面的屬性),這種屬性叫做不可配置的屬性,不可配置的屬性delete不掉。上面的小demo就很好展示出來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章