首页 > 其他 > 详细

面向对象3

时间:2019-03-02 17:50:22      阅读:147      评论:0      收藏:0      [点我收藏+]

方法1.克隆对象

技术分享图片

 

这种写法不是克隆对象,就是把obj的内存地址赋值给obj2.

通过for in克隆          不管是公有的还是私有的都克隆成私有的

技术分享图片

js提供了一个克隆的方法object.create()

var obj2=object.create(obj)     将obj的所有属性克隆到obj2的原型上

技术分享图片

2.  对象的继承

  1.原型继承:将父类的实例赋值给子类的原型

技术分享图片

这就是原型继承  将父类的私有和公有都继承在子类的的原型上,成为子类的公有属性。

  2.call继承        将父类私有的继承为子类私有的

技术分享图片

  3.冒充对象继承        将父类私有的和公有的都继承为子类私有的

技术分享图片

  4.混合继承  私有的继承为私有的, 公有的和私有的再次继承为公有的

混合继承是call和原型继承的结合  私有的被继承了两次

技术分享图片

5.组合继承   私有的继承为私有的  公有的继承为公有的

技术分享图片

6.中间类继承

技术分享图片

  arguments不是一个数组,没有array的那些自带的方法   现在我们想arguments有array的那些方法,将arguments的原型执行Array内置类的原型。

面向对象的三大特点:封装  继承   多态/重载

封装:子类继承父类的属性。

多态:

现在学习的js是EcmaScript2014(ES5)生成靠构造函数,ecmascript2015(es6)用class生成类。

constructor  构造器

1.浏览器给每个类(函数)天生赋予一个prototype的属性,这个属性是一个对象,里面有个constructor的属性,叫构造器,指向当前的类本身

技术分享图片

2.       人为改变类的原型指向(给protoype赋值引用数据类型,基本数据类型不改变),浏览器赋予的constructor属性就不存在了可以人为添加。如果是简单的基本数据类型constructor还存在。

3.   类在代码中扮演是三种角色,普通函数,普通对象,类

4.  每个对象天生有一个__proto__的属性,叫原型,他指向父类的原型,     obj.__proto__==person.prototype     true

5.  prototype和__proto__都叫原型,前者是函数的属性,后者是对象的属性,前者給程序员使用后者是浏览器用于查找原型的的。

this的指向

对象继承

  1.克隆对象不是将一个对象赋值给另一个对象,var obj1=obj2这不是对象克隆,是把obj2的引用地址赋值给obj1.

  2.通过for in 和object.create()克隆对象

  for in克隆的属性是私有的,create()得到的属性都是公有的在原型上。

面向对象3

原文:https://www.cnblogs.com/guhuai/p/10461634.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!