js中new关键字

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<script>
		//任意函数都可以使用new关键字进行调用 通过new使得普通的函数变成了构造函数
		//一般情况下构造函数的首字母需要大写
		
		//new关键字做了四件事。
		//1-开辟了一块内存空间 创建了一个新对象
		//2-让this指向这个空对象 
		//3-调用构造函数 给对象添加属性和方法 
		//4-返回这个新对象

		//知识点: 在js中构造函数可以有返回值也可以没有
// =========================================================================================
		// function A(){
	 //        console.log("A"); //A
	 //        return "aaa";
	 //    }
	 //    var obj1 = new A();
	 //    console.log(obj1);  //A{}
	    //如果返回值是基本数据类型 js会自动忽略这个返回值,也就是跟没有写返回值一样 最终返回的还是新创建的实例对象
// ========================================================================================	     
	    // function B(){
	    //     console.log("B");  //B
	    //     return {b:"bbb"};//字面量创建对象 ===(等同于)new Object({b:"bbb"})
	    // }
	    // var obj2 = new B();
	    // console.log(obj2);  //{b:"bbb"}
	    //如果返回值是引用数据类型 则实际返回的就是这个引用数据类型(复杂数据类型),此时函数返回值即return,只跟当前写的数据类型有关,跟新创建的实例对象没有任何关系!
// =======================================================================================				
	    //常规用法
	    // function C(){
	    //     console.log("C");   //C
	    // }
	    // var obj3 = new C();
	    // console.log(obj3);   //C{}
			//如果没写return,这个构造函数也有返回值,返回当前创建的新对象,因为new做了这件事
			
// =======================================================================================
  // function D(){
	    //     console.log("D");  //D
	    //     return this;
	    // }
	    // var obj4 = new D();
	    // console.log(obj4);   //D{}
	    //如果函数的返回值是this 那么就跟没有写返回值结果是一样的,因为new是this指向当前创建的新对象,即实例


	    function obj(x){
	        console.log("E"); //E
					this.x = x; 
	    }
	    var obj1 = new obj(10);//new做的事情是让当前普通函数转化成构造函数,使this指向当前实例
			console.log(obj1);
			
	    var obj2 = obj(10);//相当于函数调用,this指向window。window上有键值X :10;
			console.log(window);
			

			
		
	</script>
</body>
</html>

 

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值