资讯专栏INFORMATION COLUMN

关于javascript类特性的一些总结

sunsmell / 767人阅读

摘要:被克隆的对象称之为新对象的原型,新对象保存一个指向其原型的引用。一个对象是如何与其原型联系起来的呢答对象的属性指向其构造函数的。如何实现继承呢使构造函数的等于另一个构造函数的一个实例这样就使得继承于。

众所周知,在javascript这门动态类型语言中,是不存在如传统静态类型语言如c++或java中对类的支持的。后者是天生为面向对象编程而设计,其中涉及的一些概念如继承、多态、函数重载在js中都不是被原生实现的。

然而,js也是可以实现面向对象编程的,一切都归功于其原型编程范形特性。也就是说,一切数据类型都可以被看做是对象(js中还存在Number,String,Boolean这样的基本数据类型),要产生一个对象,不是通过用类进行实例化,而是克隆另一个对象。被克隆的对象称之为新对象的原型,新对象保存一个指向其原型的引用。当调用新对象中的某个属性时,如果不存在,则会顺着原型链一直往上查找,直达Object.prototype这个js中的根对象为止,如不存在则为undefined。

注:js中的所有对象都是直接或者间接克隆Object.prototype, 这是一个空对象。

那么如何克隆/产生一个对象呢?
答: 在js中可以通过new func()的形式,这里的func是一个function,但这里并不作为普通的函数调用,而是作为一个构造器。而这个函数就是通过这个函数构造出来的对象的构造函数。

一个对象是如何与其原型联系起来的呢?
答:对象的__proto__属性指向其构造函数的prototype。
例如,var obj = new Object(); 那么就存在 obj.__porto__ === Object.prototype。

如何实现继承呢?

(1)使构造函数A的prototype等于另一个构造函数B的一个实例(A.prototype = new B() ),这样就使得A继承于B。

(2)使用apply方法,使B函数能够借用A函数:

    var A = function( name ){
        this.name = name;
    }; 
    var B = function(){
        A.apply( this, arguments );
    }; 
    B.prototype.getName = function(){
        return this.name;
    };
    var b = new B( "xiao" );
    console.log( b.getName() );
    

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/80761.html

相关文章

  • JavaScript深入浅出

    摘要:理解的函数基础要搞好深入浅出原型使用原型模型,虽然这经常被当作缺点提及,但是只要善于运用,其实基于原型的继承模型比传统的类继承还要强大。中文指南基本操作指南二继续熟悉的几对方法,包括,,。商业转载请联系作者获得授权,非商业转载请注明出处。 怎样使用 this 因为本人属于伪前端,因此文中只看懂了 8 成左右,希望能够给大家带来帮助....(据说是阿里的前端妹子写的) this 的值到底...

    blair 评论0 收藏0
  • JS程序

    摘要:设计模式是以面向对象编程为基础的,的面向对象编程和传统的的面向对象编程有些差别,这让我一开始接触的时候感到十分痛苦,但是这只能靠自己慢慢积累慢慢思考。想继续了解设计模式必须要先搞懂面向对象编程,否则只会让你自己更痛苦。 JavaScript 中的构造函数 学习总结。知识只有分享才有存在的意义。 是时候替换你的 for 循环大法了~ 《小分享》JavaScript中数组的那些迭代方法~ ...

    melody_lql 评论0 收藏0
  • ES6-7

    摘要:的翻译文档由的维护很多人说,阮老师已经有一本关于的书了入门,觉得看看这本书就足够了。前端的异步解决方案之和异步编程模式在前端开发过程中,显得越来越重要。为了让编程更美好,我们就需要引入来降低异步编程的复杂性。 JavaScript Promise 迷你书(中文版) 超详细介绍promise的gitbook,看完再不会promise...... 本书的目的是以目前还在制定中的ECMASc...

    mudiyouyou 评论0 收藏0
  • 读懂 SOLID 「里氏替换」原则

    摘要:什么是里氏替换原则某个对象实例的子类实例应当可以在不影响程序正确性的基础上替换它们。除了在编程语言层面,在前端实际工作中,你可能会听到一个叫作的概念,这个概念我认为也是里氏替换原则的一直延伸。 这是理解SOLID原则,关于里氏替换原则为什么提倡我们面向抽象层编程而不是具体实现层,以及为什么这样可以使代码更具维护性和复用性。 什么是里氏替换原则 Objects should be rep...

    vibiu 评论0 收藏0
  • 个人分享--web前端学习资源分享

    摘要:前言月份开始出没社区,现在差不多月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了一般来说,差不多到了转正的时候,会进行总结或者分享会议那么今天我就把看过的一些学习资源主要是博客,博文推荐分享给大家。 1.前言 6月份开始出没社区,现在差不多9月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了!一般来说,差不多到了转正的时候,会进行总结或者分享会议!那么今天我就...

    sherlock221 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<