【管子先生的Node之旅·6】V8中的JavaScript(三)

FUNCTION

V8 中还提供了 .bind 用来改变this的引用:

    function a() {
        return this.hello == 'hello';
    }

    var b = a.bind({ hello: 'hello' });
    b(); //=>true

V8 中还支持到非标准的函数属性命名,并可以使用 .name 来获取命名:

    var a = function b() {}
    a.name; //=>b

该属性用于 V8 内部的堆栈追踪。当有错误抛出时,V8 会显示一个堆栈信息,并会告诉你是那个函数出错了。因此,为函数命名有助于调试,所以推荐。

__PROTO__(继承)

__proto__ 使得定义继承链更容易:

   function Animal() {}
    Animal.prototype.dsd = function(e) {
        return e;
   }

    function Dog() {}

    // 使用__proto__实现继承
    Dog.prototype.__proto__ = Animal.prototype;

    var dog = new Dog();
    dog.dsd(110); //=>110

存取器

可以通过 __defineSetter__ 来设置属性, __defineGetter__ 访问属性。
下面这个例子,为所有的 String 对象添加了 student 获取器,它会执行设定好的逻辑,简单的访问该属性就会调用事先设定好的函数,无需显性调用:

    String.prototype.__defineGetter__('student', function() {
        return '今天是' + this + '值日';
    })
    
    var a = new String('小明');
    a.student; //=>今天是小明值日
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,833评论 19 139
  • chapter 2 JavaScript概览 介绍 js是基于原型,面向对象, 弱类型的的动态脚本语言。 Java...
    ShallLi阅读 5,334评论 1 2
  • 原文:http://dmitrysoshnikov.com/ecmascript/javascript-the-c...
    jaysoul阅读 3,375评论 0 0
  • 第三周老师布置任务看《秘密》这个电影,已经看过一次,再一次观看,依然被深深的吸引,依然有很多的感慨! 什么是吸引力...
    雨彤228阅读 2,555评论 0 0
  • 大雄宝殿之内,灯火辉煌,左右两边诸位长老坐定,正中坐着法盲师叔,其余僧人全在殿外看热闹。这么多人,唯独不见师父。 ...
    Hey东寻阅读 3,122评论 3 5

友情链接更多精彩内容