有關(guān)于JS輔助函數(shù)inherit()的問題
最近在閱讀《JavaScript權(quán)威指南》(第六版)在第六章P122有這么一段代碼:
// 返回一個繼承自原型對象proto的屬性的新對象
// 這里可以用到ES5的Object.create()函數(shù)
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() {}; // 定義一個空構(gòu)造函數(shù)
F.prototype = proto; // 將其原型屬性設(shè)置為proto
return new F(); // 使用F()創(chuàng)建proto的繼承對象
}
很明顯輔助函數(shù)的用途是創(chuàng)建一個繼承父類原型的新對象
問題
在關(guān)于下面的這句判斷時,一時無法理解
var t = typeof proto; //否則進一步檢查
if(t!=='object' && t!=='function') throw TypeError();
我們的印象中原型對象應該是個Object或者直接是字面量,那么傳遞的參數(shù)類型會有“function”類型情況嗎
理解
函數(shù)也是對象,也可以有自己的屬性和方法。等等,這不是我們的靜態(tài)屬性和方法?。∵@里是指把函數(shù)看成可以添加屬性的對象
// 測試傳遞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'類型的
相關(guān)文章
javascript indexOf方法、lastIndexOf 方法和substring 方法
indexOf() 方法可返回某個指定的字符串值在字符串中首次出現(xiàn)的位置。2009-03-03淺談javascript中onbeforeunload與onunload事件
javascript中onbeforeunload與onunload事件就是頁面加載前與頁面關(guān)閉時的兩個功能的函數(shù),可以防止頁面刷新時給提示再刷新或頁面關(guān)閉時給出提示,下面我來介紹onbeforeunload與onunload事件用法。2015-12-12怎樣在JavaScript里寫一個swing把數(shù)據(jù)插入數(shù)據(jù)庫
在JavaScript里寫一個swing來實現(xiàn)確定取消,來決定是否執(zhí)行這個功能 控制把數(shù)據(jù)插入數(shù)據(jù)庫,接下來介紹實現(xiàn)方法2012-12-12javascript中的onkeyup和onkeydown區(qū)別介紹
文本框里輸入的時候要開始計算文本框里面輸入了多少字,自然想到了onkeydown事件,然后計算value.length的方法,下面看下具體的代碼2013-04-04<script defer> defer 是什么意思
好多朋友不知道 script后面加個defer是什么意思有什么作用。2009-05-05