最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

原生JS中應(yīng)該禁止出現(xiàn)的寫法

 更新時間:2021年05月04日 11:46:15   作者:淺笑·  
這篇文章主要介紹了原生JS中應(yīng)該禁止出現(xiàn)的寫法,以提高代碼效率和安全性,對效率和安全感興趣的同學(xué),可以參考下

塊級函數(shù)

嚴(yán)格模式下,在 ES6 之前應(yīng)禁止使用。ES6 開始可以使用,函數(shù)的作用域為聲明該函數(shù)的塊內(nèi)部。非嚴(yán)格模式下應(yīng)禁止使用。

if(true) {
    function test() { //塊級函數(shù)
        console.log(1);
    }
}
test();

直接修改對象的 prototype 原型

瀏覽器對原型進(jìn)行了優(yōu)化,在調(diào)用實例之前,會為對象的方法提前規(guī)劃內(nèi)存位置。所以不可以直接修改 prototype 原型。以下兩種方法都應(yīng)禁止使用

使用 Object.setPrototypeOf 修改原型

function a(){}
a.prototype = {
  a_prop: "a val"
};
function b(){}
var proto = {
  b_prop: "b val"
};
Object.setPrototypeOf(
  proto, a.prototype
);
b.prototype = proto;
var test = new b;
console.log(test.a_prop); // a val
console.log(test.b_prop); // b val

直接修改對象的 __proto__ 屬性

function a(){}
a.prototype = {
  a_prop: "a val"
};
function b(){}
var proto = {
  b_prop: "b val",
  __proto__: a.prototype //直接修改 b 對象的 __prototype__ 屬性
};
b.prototype = proto;
var test = new b;
console.log(test.a_prop); // a val
console.log(test.b_prop); // b val

with

with 的用法:

var a = {
    p1: 1,
    p2: 2
}
with (a) {
    p1 = 3;
}
console.log(a.p1);

應(yīng)該禁止使用 with,例如:

function a(arg1, arg2) {
  with (arg2){
    console.log(arg1); // 無法確定是要輸出第一個參數(shù)還是要輸出 arg2 的 arg1 屬性
  }
}
var arg2 = {arg1:1}
a("arg1", arg2)

callee

arguments.callee 表示當(dāng)前正在執(zhí)行的函數(shù):

function a(arg1) {
    if (arg1 > 1) {
        return arg1 * arguments.callee(arg1 - 1);
    }
    else {
        return 1;
    }
}
console.log(a(3)); // 6

當(dāng)一個函數(shù)必須調(diào)用自身的時候, 應(yīng)禁止使用arguments.callee(),直接通過函數(shù)名字調(diào)用該函數(shù)。

function a(arg1) {
    if (arg1 > 1) {
        return arg1 * a(arg1 - 1); // 直接通過函數(shù)名稱調(diào)用
    }
    else {
        return 1;
    }
}
console.log(a(3)); // 6

caller

caller 表示函數(shù)的調(diào)用者,應(yīng)禁止使用,該特性不是標(biāo)準(zhǔn)的。

function a() {
    console.log(a.caller); // function b() { a(); }
}
function b() {
    a();
}
b();

eval

eval() 可以把傳入的字符串參數(shù)當(dāng)成JavaScript代碼執(zhí)行。

eval("var a = 1, b = 2; console.log(a+b)"); // 3

禁止使用 eval。eval 比一般JavaScript執(zhí)行要慢,因為瀏覽器對 javascript 進(jìn)行了優(yōu)化。eval 方法也不安全,因為它使用與調(diào)用者相同的權(quán)限執(zhí)行代碼,而且 eval() 被調(diào)用時,它的作用域也會暴露。應(yīng)該用 Function 代替:

var a = new Function("a", "b", "console.log(a+b)")
a(1,2); // 3

以上就是原生JS中應(yīng)該禁止出現(xiàn)的寫法的詳細(xì)內(nèi)容,更多關(guān)于原生JS中應(yīng)該禁止的寫法的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 簡單實現(xiàn)JavaScript圖片切換效果

    簡單實現(xiàn)JavaScript圖片切換效果

    這篇文章主要教大家如何簡單實現(xiàn)JavaScript圖片切換效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • json數(shù)據(jù)處理技巧(字段帶空格、增加字段、排序等等)

    json數(shù)據(jù)處理技巧(字段帶空格、增加字段、排序等等)

    json數(shù)據(jù)處理技巧例如:正常取值、字段帶空格、賦值、增加字段、排序、拷貝、數(shù)組添加和刪除等,詳細(xì)請參考本文或許對你有所幫助
    2013-06-06
  • 輸入npm?run?xxx后執(zhí)行原理深入解析

    輸入npm?run?xxx后執(zhí)行原理深入解析

    這篇文章主要為大家介紹了輸入npm?run?xxx后執(zhí)行原理深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • JavaScript 函數(shù)參數(shù)是傳值(byVal)還是傳址(byRef) 分享

    JavaScript 函數(shù)參數(shù)是傳值(byVal)還是傳址(byRef) 分享

    這篇文章主要介紹了在JS中函數(shù)參數(shù)是傳值(byVal)還是傳址(byRef)的誤區(qū)我們通過實例說明一下,有需要的朋友可以參考
    2013-07-07
  • Object.keys方法實例詳解

    Object.keys方法實例詳解

    這篇文章主要介紹了Object.keys方法實例詳解,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • 微信小程序開發(fā)常用功能匯總

    微信小程序開發(fā)常用功能匯總

    這篇文章主要介紹了微信小程序開發(fā)常用功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • 全面理解JavaScript中的繼承(必看)

    全面理解JavaScript中的繼承(必看)

    下面小編就為大家?guī)硪黄胬斫釰avaScript中的繼承(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 前端解決跨域問題nmp安裝http-server的問題

    前端解決跨域問題nmp安裝http-server的問題

    這篇文章主要介紹了前端解決跨域問題-nmp安裝http-server的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 你可能不知道的前端算法之文字避讓(inMap)

    你可能不知道的前端算法之文字避讓(inMap)

    這篇文章主要給大家介紹了關(guān)于前端算法之文字避讓的相關(guān)資料,對于這個知識相信很多的朋友都不知道,但看到效果會驚嘆不已,實現(xiàn)這一個效果主要利用的是inMap文字避讓功能,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • JavaScript實現(xiàn)鼠標(biāo)移入隨機(jī)變換顏色

    JavaScript實現(xiàn)鼠標(biāo)移入隨機(jī)變換顏色

    這篇文章主要給大家介紹了關(guān)于JavaScript實現(xiàn)鼠標(biāo)移入隨機(jī)變換顏色的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評論

惠东县| 蓝田县| 阿坝县| 重庆市| 罗平县| 弥勒县| 平定县| 宝清县| 清徐县| 梧州市| 鄂托克前旗| 富源县| 绥德县| 郎溪县| 仪陇县| 金门县| 黄陵县| 额尔古纳市| 荆州市| 九寨沟县| 平乐县| 涟水县| 贺州市| 鸡泽县| 平利县| 沿河| 老河口市| 靖远县| 浏阳市| 綦江县| 个旧市| 潼关县| 靖远县| 惠东县| 安远县| 邵阳市| 邵东县| 郯城县| 灵武市| 乌拉特前旗| 晴隆县|