总结-定义对象进阶&Object&hasOwnProperty()&create()&call、apply、bind函数&继承&静态属性&私有属性&this指向

定义对象进阶&Object&hasOwnProperty()&create()&call、apply、bind函数&继承&静态属性&私有属性&this指向
	定义对象进阶
		1.构造函数方式
			这种方式定义的对象会占用很多内存,因为每个对象创建单独的空间,存储各自的内容
		2.原型对象方式
			缺点:当改变一个对象的引用类型的属性后,其他对象也发生了变化
		3.混合方式定义
			混合是指构造函数方式和原型对象方式混合,将属性放到构造函数内部,将成员方法放到原型对象中。
			节省内存,而且又能将函数区分开
		4.动态混合方式
			类似于单例模式的写法
	Object 
		Object是JS内置的一个构造函数
		Object函数也有原型对象
		所有自定义对象,它的原型对象都是Object对象。所以自定义对象可以使用Object函数中的成员,也可以使用Object原型对象上的成员
	hasOwnProperty()
		hasOwnProperty方法是Object函数的原型对象上的方法。
		hasOwnProperty方法用于检测实例对象是否有非继承的属性,也就是自身有该属性。
	create()
		create()方法是Obejct构造函数内的成员方法,而且是一个静态方法(调用方式是直接使用Object来调用)。
		create()方法用于创建对象,创建对象的时候,可以指定对象的原型对象。
		var o = Object.create({原型对象}, {o对象的内容});
		var o = Object.create({父对象}, {子对象o本身});
	call、apply、bind函数
		这三个函数都可以改变函数内部this的指向
		函数.call(希望this指向的对象,参数1, 参数2…);  调用之后,会直接执行函数
		函数.apply(希望this指向的对象,[参数1, 参数2…]); 调用之后,会直接执行函数
		函数.bind(希望this指向的对象,参数1, 参数2…);  调用之后,不会执行函数。
	继承
		冒充继承
			父类.call(子类的对象, 其他参数);  //意思是让子类的对象,去代替父类中的this。
		原型链继承
			通过prototype实现,指定B的原型对象为A的实例
		create()继承
			var o = Object.create({原型对象}, {o对象的内容});
	静态属性
		静态方法的特点就是可以直接使用构造函数来调用
		把属性直接定义到构造函数上即可。调用的时候,也是直接使用构造函数来调用。
	私有属性
		私有属性其实就是函数内部的局部变量。
	this指向
		this永远指向一个对象。
		this指向的对象是谁,关键要看this运行的环境。也就是this所在的函数被赋值给哪个对象了,那么this就表示这个对象。
		全局环境下,this表示window对象。
		事件处理函数中,this表示绑定事件的DOM对象。
		面向对象中的this表示函数所属的对象。
		定时器中的this
			setTimeout(obj.fn,  1000);  // 执行的时候,fn 所在的环境丢失。this容易发生改变
			setTimeout('obj.fn()',  1000); // 执行的时候,fn还在obj对象环境中,this不会发生变化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值