JS丨基础考察06丨原型链类

01. 原型链类 大纲

<script type="text/javascript">
	01. 创建对象有几种方法: 字面量、显示构造函数、Object.create
	
	
	02. 原型、构造函数、实例、原型链
		01. 构造函数.prototype.constructor === 构造函数
		02. 构造函数.prototype === 实例化对象.__proto__
		
		03. Function.prototype === 构造函数.__proto__ === 实例化对.__proto__.constructor.__proto__
	
	
	03. instanceof 的原理
	console.log(实例化对象 instanceof 构造函数);
	console.log(实例化对象 instanceof Object);
	
	
	04. new 运算符
		var new02 = function(func){
			var obj = Object.create(func.prototype);
			var k = func.call(obj)
			if(typeof k === 'object'){
				return k;
			}else{
				return obj
			}
		}
</script>

 02. 创建对象有几种方式

<script type="text/javascript">
	// 01. 第一种方式: 字面量
	var obj01 = {
		name: '011'
	};
	var obj02 = new Object({
		name: '012'
	})
	console.log(obj01)
	console.log(obj02)
	// 02. 第二种方式: 显示构造函数
	var M = function(name){
		this.name = name
	}
	var obj03 = new M('021')
	console.log(obj03)
	// 03. 第三种方式: Object.create
	var p = {
		name: '030'
	}
	var obj04 = Object.create(p)
	console.log(obj04)
</script>

02. 原型、构造函数、实例、原型链

<script type="text/javascript">
	// 02. 原型、构造函数、实例、原型链
	console.log(M.prototype.constructor)// 指向构造函数
	console.log(M === M.prototype.constructor)
	
	
	console.log(M.prototype)// 指向构造函数的原型对象
	console.log(obj03.__proto__)// 指向构造函数的原型对象
	
	console.log(obj03.__proto__ === M.prototype)
	console.log(obj03.__proto__.constructor === M.prototype.constructor)
	console.log(M.__proto__ === Function.prototype)
	//console.log(Function.prototype === obj03.__proto__.constructor.__proto__)
</script>

03. instanceof 的原理

<script type="text/javascript">
	// 03. instanceof 的原理
	console.log(obj03 instanceof M);
	console.log(obj03 instanceof Object);
	
	console.log(M.prototype.__proto__ === Object.prototype) 
	console.log(obj03.__proto__.constructor === M)
	console.log(obj03.__proto__.constructor === Object) 
</script>

04. new 运算符

<script type="text/javascript">
	// 04. new 运算符
	M.prototype.say = function(){
		console.log('say hi')
	}
	var obj05 = new M('05')
	console.log(obj05)
	
	// 运算符工作原理
	var new02 = function(func){
		var obj = Object.create(func.prototype);
		var k = func.call(obj)
		if(typeof k === 'object'){
			return k;
		}else{
			return obj
		}
	}
	var obj06 = new02(M)
	console.log(obj06)
	console.log(obj06.__proto__.constructor === M)
</script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值