原型链

1.创建对象的3种方法

// 第一种:字面量
var o1 = {name:'o1'};
var o11 = new Object({name:'o11'});

// 第二种: 通过构造函数
var M = function(){
	this.name = 'o2';
}
var o2 = new M();

// 第三种:Object.create()方法
var P = {name:'p'};
var o3 = Object.create(P); 

2.原型、构造函数、实例、原型链
原型、构造函数、实例、原型链
3.instanceof的原理
instanceof 用于判断一个对象是否是构造函数的实例。
原理:判断实例对象的__proto__属性和构造函数的prototype属性引用的是否是同一个原型。
instanceof的原理

var M = function(){
	this.name = 'o2';
}
var o2 = new M();
console.log(o2 instanceof M)  // true
console.log(o3 instanceof Object)  // true
console.log(o3.__proto__ === M.prototype)  // true
console.log(M.prototype.__proto__ === Object.prototype) //true

// 通过 constrotor 判断实例对象的直系构造函数
console.log(o3.__proto__.constructor === M);  // true
console.log(o3.__proto__.constructor === Object);  //false

4.new运算符
new运算符

// 用一段代码来模拟new的执行过程,func表示构造函数
var new2 = function(func) {
	var o = Object.create(func.prototype); //创建一个空对象
	var k = func.call(o); //执行构造函数
	
	//判断构造函数的运行结果是不是对象类型
	if(typeof k === 'object') { 
		return k;
	} else {
		return o;
	}
}

//测试
var o6 = new2(M); //创建实例
console.log(o6 instanceof M); // true
console.log(o6 instanceof Object); // true
console.log(o6.__proto__.constructor === M); // true
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值