有关于JS辅助函数inherit()的问题_Javascript教程-查字典教程网
有关于JS辅助函数inherit()的问题
有关于JS辅助函数inherit()的问题
发布时间:2016-12-30 来源:查字典编辑
摘要:最近在阅读《JavaScript权威指南》(第六版)在第六章P122有这么一段代码:复制代码代码如下://返回一个继承自原型对象proto的...

最近在阅读《JavaScript权威指南》(第六版)在第六章P122有这么一段代码:

复制代码 代码如下:

// 返回一个继承自原型对象proto的属性的新对象

// 这里可以用到ES5的Object.create()函数

function inherit(proto) {

//proto是一个对象,但不能是null

if(proto == null) throw TypeError();

if(Object.create) return Object.create(proto); //如果Object.create()存在,使用它

var t = typeof proto; //否则进一步检查

if(t!=='object' && t!=='function') throw TypeError();

var F = function() {}; // 定义一个空构造函数

F.prototype = proto; // 将其原型属性设置为proto

return new F(); // 使用F()创建proto的继承对象

}

很明显辅助函数的用途是创建一个继承父类原型的新对象

问题

在关于下面的这句判断时,一时无法理解

复制代码 代码如下:

var t = typeof proto; //否则进一步检查

if(t!=='object' && t!=='function') throw TypeError();

我们的印象中原型对象应该是个Object或者直接是字面量,那么传递的参数类型会有“function”类型情况吗

理解

函数也是对象,也可以有自己的属性和方法。等等,这不是我们的静态属性和方法啊!这里是指把函数看成可以添加属性的对象

复制代码 代码如下:

// 测试传递function类型

var func = function() {};

func.text = 'good work';

func.getText = function() {

return func.text;

};

console.log(typeof func); // 'function'

// 传递function类型,返回以func为原型的新对象

var subFunc = inherit(func);

console.log(subFunc.getText()); // 输出:'good work'

好吧,一个证明说明。原来是可以传递'function'类型的

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类