美文网首页
【管子先生的Node之旅·6】V8中的JavaScript(三)

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

作者: 管子先生 | 来源:发表于2017-10-27 18:24 被阅读0次

    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; //=>今天是小明值日
    

    相关文章

      网友评论

          本文标题:【管子先生的Node之旅·6】V8中的JavaScript(三)

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