美文网首页
JavaScript语言精粹中的坑

JavaScript语言精粹中的坑

作者: ZuJung | 来源:发表于2017-12-18 09:59 被阅读0次

2017-12-20更新:

  • 更新了以往表达不清楚的部分,为三个版本不同的地方添加上了注
  • 附上了图书版次信息以供查询

Javascript语言精粹

第3章 对象

原型

if  (typeof Object.beget !== 'function'){ // 注意这里检查是否存在beget函数
    Object.create = function(o) { // 而这里则是给Object添加了create方法
        var F = function () {};
        F.prototype = o;
        return new F();
    }
}

这个函数旨在为Object增加一个create方法,这个方法创建一个使用原对象作为其原型的新对象。
我不明白的是为什么检查beget是否是一个函数(即是否已经存在),而下面则没有用到beget函数(而是在Object上面添加了create方法?)

直接上结论:

这应该是一个印刷错误

这块应该是有两个版本:

  • 这个是英文原版
if( typeof Object.beget !== 'function' ){ // 注意这里是检查beget是否存在
    Object.beget = function(o){ // 而这里同样是添加beget方法
          var F =new Function(){}; 
          F.prototype = o;
          return new F();
    }
}
  • 这个是Safari Books Online上面的版本
if (typeof Object.create !== 'function') { // 注意这里检查create方法是否存在
    Object.create = function (o) { // 而这里是添加的create方法
        var F = function () {};
        F.prototype = o;
        return new F();
    };
}

注意:在此书新版本中,不推荐使用new关键词,而是选择使用函数表达式的方法声明函数。

这里附上图书版次信息,以供遇到同样的朋友参考

Javacript语言精粹(Crockford,D.)
电子工业出版社 2012.9
ISBN: 978-7-121-17740-8
印次:2017.04 第13次印刷


感谢Brian Duncan回答了这部分关于new的相关问题。

另外,在javascript中,new关键字必须与函数一同工作。

例如

    var a = new Array();

这里a是一个数组,typeof a == 'Object',而typeof Array == 'function';

相关文章

  • JavaScript语言精粹中的坑

    2017-12-20更新:更新了以往表达不清楚的部分,为三个版本不同的地方添加上了注释附上了图书版次信息以供查询 ...

  • 用铁路图(railroad diagram)来表示JavaScr

    在《JavaScript语言精粹》中,作者用铁路图(railroad diagram)来表示JavaScript中...

  • 避免 JavaScript 语言中毒瘤和糟粕

    昨天看了《JavaScript 语言精粹》一书,其中收获最大的就是附录中对于 JavaScript 语言的毒瘤和糟...

  • 2016 读书清单

    技术类javascript权威指南 (未完成)javascript语言精粹(?)javascript设计模式(未完...

  • 前端技术书

    入门级 《JavaScript高级程序设计》 《编写可维护的JavaScript》 《Javascript语言精粹...

  • JavaScript语言精粹

    JavaScript语言精粹 前言 约定:=> 表示参考相关文章或书籍; JS是JavaScript的缩写。 本书...

  • JavaScript语言精粹

    第二章 语法 数字 JavaScript 只有一个数字类型,它在内部被表示为64位的浮点数,和Java的doubl...

  • Javascript语言精粹

    String.slice(start, end) end 均可选,默认为数组长度 参数若为负数时,则从后选取,没有...

  • JavaScript语言精粹

    第1章 精华 JavaScript建立在一些非常优秀的想法和少数非常糟糕的想法之上优秀的想法包括:函数、弱类型、...

  • 《JavaScript语言精粹》

    《JavaScript语言精粹》 第1章 精华 第2章 语法 2.1 空白 ​ 空白可能表现为格式化字符或注释...

网友评论

      本文标题:JavaScript语言精粹中的坑

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