有关于JS辅助函数inherit()的问题
最近在阅读《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 indexOf方法、lastIndexOf 方法和substring 方法
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。2009-03-03浅谈javascript中onbeforeunload与onunload事件
javascript中onbeforeunload与onunload事件就是页面加载前与页面关闭时的两个功能的函数,可以防止页面刷新时给提示再刷新或页面关闭时给出提示,下面我来介绍onbeforeunload与onunload事件用法。2015-12-12怎样在JavaScript里写一个swing把数据插入数据库
在JavaScript里写一个swing来实现确定取消,来决定是否执行这个功能 控制把数据插入数据库,接下来介绍实现方法2012-12-12javascript中的onkeyup和onkeydown区别介绍
文本框里输入的时候要开始计算文本框里面输入了多少字,自然想到了onkeydown事件,然后计算value.length的方法,下面看下具体的代码2013-04-04<script defer> defer 是什么意思
好多朋友不知道 script后面加个defer是什么意思有什么作用。2009-05-05
最新评论