//原始值是如何調用屬性和方法的
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就很好展示出來。