註:翻譯之中有什麼不恰當的地方,歡迎大家指正,祝大家雙節快樂!
如果不是有特殊需求而去擴充原生物件和原型(prototype)的做法是不好的
//不要這樣做
Array.prototype.map = function() {
// 一些程式碼
};
除非這樣做是值得的,例如,向一些舊的瀏覽器中添加一些ECMAScript5中的方法。
在這種情況下,我們一般會這樣做:
if (!Array.prototype.map) {
Array.prototype.map = function() {
//一些代碼
};
}
如果我們比較偏執,為了防止別人將map定義為其它意想不到的值,像true或其他,我們可以將檢測代碼改為下面這樣:
if (typeof Array.prototype.map !== "function") {
Array.prototype.map = function() {
// 一些程式碼
};
}
(儘管這將破壞其它開發者的map定義,並影響他們功能的實現)
但是,在在一個充滿敵意和殘酷競爭的環境下(換句話說,但你提供或使用一個js庫時),你不應該相信任何人。如果其他人的js程式碼先於你的js程式碼加載,並且以某種方式定義了一個不完全相容ES5的map()方法,導致你的程式碼不能正常運行,該怎麼辦呢?
不過,你可以相信瀏覽器,如果Webkit核心實作了map()方法,你可以放心,這個方法一定會正常運作。否則的話,你就要用你的程式碼來偵測了。
幸運的是,這在JavaScript當中很容易實現,當你呼叫原生函數的toString方法的時候,會傳回一個函數的字串,該函數的函數體是[native code]。
例如在Chrome的控制台下:
程式碼如下:
Array.prototype.map.toString();
"function map() { [native code] }" 複製程式碼
程式碼如下:
Array.prototype.map.toString() .replace(/s/g, '*');
// " function*map()*{*****[native*code]*}" // FF
// "function*map()*{*[native*code]*}" // Chrome 複製程式碼
複製程式碼
程式碼如下:
複製程式碼
程式碼如下:
function shim(o, prop, fn >var nbody = "function" prop "(){[nativecode]}";
if (o.hasOwnProperty(prop) &&
o[prop].toString().replace(/s/g, ' ') === nbody) {
return true;
}
//這是原生的方法
shim(
Array.prototype, 'map',
function(){/*...*/}
); / / true
//這是新加入的方法
shim(
Array.prototype, 'mapzer',
function(){alert(this)}
);
[ 1,2,3].mapzer(); // alerts 1,2,3
(完)^_^

原神4.4版本新地图介绍,小伙伴们原神这次4.4版本也是迎来了璃月的海灯节,同时将在4.4版本推出一个新的地图区域,名为沉玉谷。根据提供的信息,沉玉谷实际上是翘英庄的一部分,但玩家更习惯称其为沉玉谷。下面就让小编来给大家介绍一下新地图吧。原神4.4版本新地图介绍4.4版本将开放璃月北部的「沉玉谷·上谷」、「沉玉谷·南陵」和「来歆山」,在「沉玉谷·上谷」已为旅行者开启传送锚点。※完成魔神任务序章·第三幕巨龙与自由之歌」后,将自动解锁该传送锚点。二、翘英庄当春日温煦的柔风再度抚过沉玉的山野,那馥郁的

原型,js中的一个对象,用于定义其他对象的属性和方法,每个构造函数都有一个prototype属性,这个属性是一个指针,指向一个原型对象,当创建新对象时,这个新对象会从其构造函数的prototype属性继承属性和方法。原型链,当试图访问一个对象的属性时,js会首先检查这个对象是否有这个属性,如果没有,那么js会转向这个对象的原型,如果原型对象也没有这个属性,会继续查找原型的原型。

Go语言和Python是两种非常流行的编程语言,都具有各自的优势和特点。在高性能编程方面,两者也有一些不同之处。本文将对Go语言和Python进行比较,以探讨哪个更适用于高性能编程。首先,让我们来了解一下Go语言。Go语言是由谷歌公司开发的一种开源编程语言,它专注于简洁、高效和并发性。Go语言的设计目标之一是提供高性能的编程体验。它具备轻量级的协程(goro

原型和原型链的区别是:1、原型是每个对象都具有的属性,包含了一些共享的属性和方法,用于实现对象之间的属性和方法的共享和继承,而原型链是一种通过对象之间的原型关系来实现继承的机制,定义了对象之间的继承关系,使得对象可以共享原型对象的属性和方法;2、原型的作用是定义对象的共享属性和方法,使得多个对象可以共享同一个原型对象的属性和方法,而原型链的作用是实现对象之间的继承关系等等。

在当今科技进步迅猛的时代,编程语言的选择变得非常关键。随着软件开发领域的不断发展,Go语言和Python成为了两个备受关注的编程语言。本文将对Go语言和Python进行对比分析,以帮助读者根据项目需求选择合适的编程语言。首先,让我们来了解一下Go语言。Go语言是由Google公司开发的一种静态编译型编程语言。它具有强大的并发处理能力和高效的垃圾回收机制,非常

在过去一年中,随着大模型技术的广泛应用,我们已经见证了AI如何深刻地改变着我们的工作方式。在程序编写领域,AI的介入同样将为程序员们带来前所未有的便利。近日,非十科技推出了一款基于自研代码大模型打造的AI代码助手——FittenCode,它可以帮助程序员更迅捷、更准确、更高质量地完成编码任务,大幅提升编码效率,并且向用户免费开放使用!产品官网地址:https://code.fittentech.com/FittenCode自上次发布以来迅速走红。开发团队日以继夜地工作,带来了功能、

js原型和原型链的作用是实现对象的继承,节省内存空间,并提高代码的性能和可维护性。详细介绍:1、实现对象的继承,原型和原型链允许创建一个对象,并使其继承另一个对象的属性和方法,当创建一个新的对象时,可以将其原型指向另一个对象,这样新对象就可以访问到原型对象上的属性和方法;2、节省内存和提高性能,在JavaScript中,每个对象都有一个原型,通过原型链,对象可以共享原型上等等。

原型的特点是:1、原型是一个普通的对象,它可以拥有属性和方法,就像任何其他对象一样;2、在创建对象时,会自动关联一个原型。当我们创建一个新对象时,JavaScript将自动为该对象分配一个原型,并将其与对象相关联;3、对象可以通过原型链访问原型的属性和方法;原型链的特点是:1、每个对象都有一个原型,当访问一个对象的属性时,如果该对象本身没有该属性,则会在原型对象中查找等等。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)