美文网首页
面向对象 继承方式 函数原型关系

面向对象 继承方式 函数原型关系

作者: 不正经开发者 | 来源:发表于2018-01-27 19:27 被阅读0次

1、面向对象三大特征:封装、继承、多态

    封装:将功能封装整合在对象内,只对外界暴露指定接口,外界使用只需考虑接口的使用。

    继承:JS中的继承是对象和对象之间的继承,如果一个对象想拥有另外一个对象的成员,就可以让这个对象继承自另外一个对象。

    多态:JS没有多态。


2、继承的实现方式

    ①混入式继承 

    for in { 对象[key]=继承对象[key] }

    ②替换原型方式实现继承

    构造函数.prototype=继承对象

    好处:能直接所有添加使用

    弊端:会把之前原型内的对象替换掉为要继承的对象

    ③混合式继承

    for in { 对象.prototype[key]=继承对象[key] }:没有替换原型,只是往原型中添加成员


3、原型链

    每个对象都有原型,原型也是一个对象,所以原型又有原型,形成一个链式结构,即原型链。

    对象访问属性和方法的规则:如果自己里面有这个成员,就访问自己的;如果自己没有,就去原型中查找;如果原型中没有找到,就沿着原型链接上往上查找,直到找到为止;如果到头都没找到,就返回undefined或报错。

    不管是哪个对象,最终的原型链尽头都是 Object.prototype

    意味着Object.prototype这个原型里面的成员,不管是哪个对象都可以访问


4、Object.prototype的成员介绍

    hasOwnProperty:判断自己本身是否有这个属性

    对象.hasOwnProperty(属性)

    属性 in 对象:判断自己能不能访问某个属性

    isPrototypeOf:判断一个对象是不是另一个对象的原型

    对象1.isPrototypeOf(对象2)

    propertyIsEnmuerable:判断属性是否是属于自己的

                          判断属性是否是可以遍历的

                          只有两个都成立,结果才为true

    对象.propertyIsEnmuerable(属性)

    valueOf:原始值

    *不推荐直接给内置构造函数的原型扩展方法或者属性。


6、函数是一个对象  (构造函数也是一样)

    查看函数对象:console.dir()

    这个函数是由哪个构造函数创建出来的?Function


7、函数对象中常用的属性

    函数名.caller:一个函数在哪个函数体里面被调用,那么这个函数的caller就是那个函数。(如果这个函数是直接调用,那么这个函数的caller就是null)

    函数名.length:代表的是形参的个数

    函数名.name:代表的是函数名

    函数名.arguments:代表的是实参  (函数名.arguments 这个不常用)

  (函数名.arguments === arguments)//false

    arguments:伪数组,但也是一个对象(arguments.push()没有这个方法)    

    对象里的属性:arguments.callee  函数本身


8、instanceof:判断构造函数的prototype属性在不在某个对象它的原型链上

    语法:对象 instanceof 构造函数

相关文章

  • 面向对象 继承方式 函数原型关系

    1、面向对象三大特征:封装、继承、多态 封装:将功能封装整合在对象内,只对外界暴露指定接口,外界使用只需考虑接...

  • JavaScript 常用继承方式

    JavaScript 常用继承方式 原型链继承构造函数,原型,实例之间的关系:每个构造函数之间都有一个原型对象,原...

  • js的继承

    面向对象的继承方式有很多种,原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继承、寄生式组合继承、深拷贝...

  • JavaScript 面向对象编程

    JavaScript 快速入门 面向对象编程创建对象构造函数忘记写new怎么办?原型继承class继承 面向对象编...

  • js 继承

    4种继承方式 原型式继承给原型对象添加属性原型替换子类的原型对象替换为父类的原型对象 原型链继承 借用构造函数继承...

  • JS中的面向对象

    对象 创建对象的方式 使用工厂方式创建对象 使用构造函数创建对象 原型 容易出现的问题 继承 原型继承(基于原型链...

  • es5的部分继承以及es6的class

    一、JavaScript常用的原型继承方式 原型链继承 2,构造函数继承(对象冒充继承) 3,组合继承(原型链继承...

  • JavaScript之面向对象编程

    五、面向对象编程 目录:面向对象原型继承、面向对象class继承(ES6引入的) 1.面向对象原型继承 类:模板 ...

  • 原型链

    原型继承 构造函数继承? 函数对象 原型prototype

  • ES5继承

    JS中没有其他面向对象中的“类”的概念,其继承方式主要通过“原型”,具体包括:单纯的原型链、借用构造函数(cons...

网友评论

      本文标题:面向对象 继承方式 函数原型关系

      本文链接:https://www.haomeiwen.com/subject/lqhoaxtx.html