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