原始值是如何调用属性和方法的

//原始值是如何调用属性和方法的

		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就很好展示出来。

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