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

JavaScript中this取值深度解讀

 更新時間:2025年12月08日 09:09:05   作者:小帆聊前端  
在JavaScript中this關(guān)鍵字是一個非常重要的概念,它的指向取決于函數(shù)是如何被調(diào)用的,這篇文章主要介紹了JavaScript中this取值的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言:被 this 折磨的前端日常

“為什么函數(shù)里的 this 一會兒是 window,一會兒是 undefined?”
“對象方法里的 this,賦值給變量后調(diào)用怎么就指向全局了?”
“箭頭函數(shù)的 this 為什么跟外層函數(shù)一模一樣,改都改不了?”
“用 new 創(chuàng)建實(shí)例時,this 明明指向?qū)嵗?,怎么返回個對象就變了?”

this 是 JavaScript 中最容易讓人困惑的概念之一 —— 它既不是 “定義時綁定”,也不是 “誰調(diào)用就指向誰” 這么簡單。很多開發(fā)者靠 “經(jīng)驗(yàn)猜 this”,遇到復(fù)雜場景就陷入調(diào)試?yán)Ь?。本文將?“執(zhí)行上下文本質(zhì)” 出發(fā),通過 “場景復(fù)現(xiàn)→原理拆解→代碼驗(yàn)證→避坑指南” 的邏輯,幫你徹底搞懂 this 的取值規(guī)則,從此不再靠 “猜” 寫代碼。

一、先破后立:this 的本質(zhì)不是 “誰調(diào)用指向誰”

在拆解具體場景前,必須先糾正一個流傳甚廣的誤區(qū):this 不是 “誰調(diào)用指向誰”,而是 “函數(shù)調(diào)用時,執(zhí)行上下文綁定的一個變量”。

1.1 this 的核心特性:執(zhí)行時綁定

this 的指向在函數(shù)定義時完全不確定,只有在函數(shù)被調(diào)用的那一刻,才會根據(jù) “調(diào)用方式” 綁定到具體對象,也就是無論這個函數(shù)聲明在哪里、被賦值過多少次。這是理解 this 的第一個關(guān)鍵:

// 函數(shù)定義時,this毫無意義
function sayHi() {
  console.log(this.name);
}

// 調(diào)用方式1:普通函數(shù)調(diào)用 → this指向window(瀏覽器)/global(Node)
const name = "全局";
sayHi(); // 輸出“全局”

// 調(diào)用方式2:對象方法調(diào)用 → this指向?qū)ο?
const obj = { name: "張三", sayHi };
obj.sayHi(); // 輸出“張三”

// 調(diào)用方式3:new調(diào)用 → this指向新實(shí)例
function Person(name) {
  this.name = name;
}
const p = new Person("李四");
console.log(p.name); // 輸出“李四”

同樣的函數(shù)sayHi,只因調(diào)用方式不同,this 指向完全不同 —— 這說明 “調(diào)用方式” 才是 this 綁定的核心依據(jù)。

1.2 this 的底層邏輯:執(zhí)行上下文

JavaScript 執(zhí)行函數(shù)時,會創(chuàng)建一個 “執(zhí)行上下文(Execution Context)”,其中包含三個核心變量:

  • this:當(dāng)前函數(shù)的調(diào)用者關(guān)聯(lián)對象

  • AO(Activation Object):函數(shù)的活動對象(存儲局部變量、參數(shù)等)

  • 作用域鏈:決定變量的查找范圍

this 是執(zhí)行上下文的固有屬性,其值由 “函數(shù)調(diào)用時的調(diào)用點(diǎn)(Call Site)” 決定,而非函數(shù)定義的位置。

1.3 this 綁定規(guī)則的優(yōu)先級

當(dāng)多個規(guī)則同時生效時,優(yōu)先級決定最終 this 指向,優(yōu)先級從高到低:new 綁定 > 顯式綁定(bind) > 隱式綁定 > 默認(rèn)綁定
驗(yàn)證優(yōu)先級:

  • 顯式綁定 > 隱式綁定:
const obj1 = { a: 1, foo: function() { console.log(this.a); } };
const obj2 = { a: 2 };
obj1.foo.call(obj2); // 輸出 2 → 顯式綁定覆蓋隱式
  • new 綁定 > bind 顯式綁定:
function foo(a) { this.a = a; }
const boundFoo = foo.bind({ a: 10 }); // 顯式綁定到 {a:10}
const instance = new boundFoo(20);    // new 綁定
console.log(instance.a); // 輸出 20 → new 覆蓋 bind

附上bind的實(shí)現(xiàn)代碼(可知:new 綁定 > bind 顯式綁定):

Function.prototype.bind = function (context) {
  var self = this;
  var args = Array.prototype.slice.call(arguments, 1);

  var fBound = function () {
    var bindArgs = Array.prototype.slice.call(arguments);
    // new創(chuàng)建的時候,this指向new出來的對象實(shí)例,這個實(shí)例通過new創(chuàng)建的,那么實(shí)例的constructor指向fBound
    return self.apply(this instanceof fBound ? this : context, args.concat(bindArgs));
  }
  // 修改返回函數(shù)的 prototype 為綁定函數(shù)的 prototype,實(shí)例就可以繼承綁定函數(shù)的原型中的值
  fBound.prototype = this.prototype;
  return fBound;
}

二、場景拆解:6 種核心調(diào)用方式的 this 綁定規(guī)則

實(shí)際開發(fā)中,this 的綁定場景可歸納為 6 類,覆蓋 99% 的業(yè)務(wù)需求。每類場景都有明確的綁定規(guī)則,掌握這些規(guī)則就能精準(zhǔn)判斷 this 指向。

2.1 場景 1:普通函數(shù)調(diào)用(無任何綁定)

調(diào)用形式:直接通過函數(shù)名()調(diào)用,不掛載在任何對象上。
綁定規(guī)則

  • 非嚴(yán)格模式:this 綁定到全局對象(瀏覽器是window,Node 是global);

  • 嚴(yán)格模式(use strict):this 綁定到undefined(禁止自動綁定全局對象)。

代碼驗(yàn)證:

// 非嚴(yán)格模式
function normalCall() {
  console.log("非嚴(yán)格模式:", this); // window(瀏覽器)
}
normalCall();

// 嚴(yán)格模式
function strictCall() {
  "use strict";
  console.log("嚴(yán)格模式:", this); // undefined
}
strictCall();

// 坑點(diǎn):函數(shù)內(nèi)嵌套函數(shù),仍按普通調(diào)用處理
function outer() {
  console.log("outer this:", this); // window(非嚴(yán)格模式)
  function inner() {
    console.log("inner this:", this); // window(非嚴(yán)格模式)
  }
  inner(); // 普通調(diào)用,與outer的this無關(guān)
}
outer();

避坑點(diǎn):

  • ? 不要在普通函數(shù)中依賴this獲取全局對象(嚴(yán)格模式下會報(bào)錯);

  • ? 如需訪問全局對象,瀏覽器用window,Node 用globalThis(通用)。

2.2 場景 2:對象方法調(diào)用(掛載在對象上調(diào)用)

調(diào)用形式:通過對象.函數(shù)名()調(diào)用,函數(shù)作為對象的屬性存在。

綁定規(guī)則:this 綁定到 “調(diào)用該方法的對象”(即.前面的對象)。

代碼驗(yàn)證:

const user = {
  name: "張三",
  sayHi() {
    console.log("this指向:", this); // 指向user對象
    console.log("用戶名:", this.name); // 輸出“張三”
  },
  address: {
    city: "北京",
    getCity() {
      console.log("城市:", this.city); // 指向address對象,輸出“北京”
    }
  }
};

// 直接調(diào)用對象方法 → this指向?qū)ο?
user.sayHi(); 
user.address.getCity(); 

// 坑點(diǎn)1:方法賦值給變量后,變成普通調(diào)用
const sayHi = user.sayHi;
sayHi(); // 普通調(diào)用 → this指向window,name為undefined

// 坑點(diǎn)2:嵌套對象中,this指向直接調(diào)用的對象(非外層)
user.address.getCity.call(user); // 強(qiáng)制改變this為user,輸出undefined(user無city屬性)

關(guān)鍵原理:

this 綁定的是 “直接調(diào)用者”,而非 “函數(shù)定義時所在的對象”。即使函數(shù)定義在其他地方,只要通過obj.fn()調(diào)用,this 就指向obj

// 函數(shù)定義在外部
function getUserName() {
  console.log(this.name);
}

// 掛載到不同對象調(diào)用
const obj1 = { name: "李四", getUserName };
const obj2 = { name: "王五", getUserName };

obj1.getUserName(); // 輸出“李四”(this指向obj1)
obj2.getUserName(); // 輸出“王五”(this指向obj2)

2.3 場景 3:構(gòu)造函數(shù)調(diào)用(new 關(guān)鍵字)

調(diào)用形式:通過new 函數(shù)名()創(chuàng)建實(shí)例。

綁定規(guī)則:this 綁定到 “新創(chuàng)建的實(shí)例對象”。

代碼驗(yàn)證:

function Person(name, age) {
  // new調(diào)用時,this指向新創(chuàng)建的Person實(shí)例
  this.name = name;
  this.age = age;
  console.log("構(gòu)造函數(shù)this:", this); // Person { name: "...", age: ... }
}

// new調(diào)用 → this綁定到實(shí)例
const p1 = new Person("趙六", 25);
console.log(p1.name); // 輸出“趙六”

// 坑點(diǎn):構(gòu)造函數(shù)返回對象會覆蓋this
function PersonWithReturn(name) {
  this.name = name;
  // 返回對象時,new創(chuàng)建的實(shí)例會被這個對象替代
  return { name: "錢七" };
}
const p2 = new PersonWithReturn("孫八");
console.log(p2.name); // 輸出“錢七”(this被覆蓋)

// 注意:返回基本類型(如number、string)不會覆蓋this
function PersonWithPrimitive(name) {
  this.name = name;
  return 123; // 基本類型,不影響this
}
const p3 = new PersonWithPrimitive("周九");
console.log(p3.name); // 輸出“周九”

new 調(diào)用的底層流程:

  1. 創(chuàng)建一個新的空對象(const obj = {});

  2. 將新對象的__proto__指向構(gòu)造函數(shù)的prototype(實(shí)現(xiàn)繼承);

  3. 調(diào)用構(gòu)造函數(shù),將 this 綁定到新對象;

  4. 若構(gòu)造函數(shù)返回對象,則返回該對象;否則返回新對象。

2.4 場景 4:apply/call/bind 綁定(強(qiáng)制改變 this)

調(diào)用形式:通過fn.apply(obj)、fn.call(obj)、fn.bind(obj)調(diào)用。
綁定規(guī)則:this 強(qiáng)制綁定到傳入的objobjnull/undefined時,非嚴(yán)格模式綁定全局,嚴(yán)格模式綁定obj)。

三者區(qū)別:

方法調(diào)用形式是否立即執(zhí)行參數(shù)傳遞方式
applyfn.apply(obj, [arg1, arg2])數(shù)組傳遞參數(shù)
callfn.call(obj, arg1, arg2)逗號分隔傳遞參數(shù)
bindconst newFn = fn.bind(obj)返回新函數(shù),延遲執(zhí)行

代碼驗(yàn)證:

function sayInfo(age, city) {
  console.log(`姓名:${this.name},年齡:${age},城市:${city}`);
}

const user = { name: "吳十" };

// apply調(diào)用 → 數(shù)組傳參,立即執(zhí)行
sayInfo.apply(user, [28, "上海"]); // 輸出“姓名:吳十,年齡:28,城市:上?!?

// call調(diào)用 → 逗號傳參,立即執(zhí)行
sayInfo.call(user, 28, "上海"); // 輸出同上

// bind調(diào)用 → 返回新函數(shù),延遲執(zhí)行
const boundSayInfo = sayInfo.bind(user, 28);
boundSayInfo("上海"); // 輸出同上

// 坑點(diǎn):bind是硬綁定,后續(xù)無法被apply/call修改
const newObj = { name: "鄭十一" };
boundSayInfo.call(newObj, "北京"); // 仍輸出“吳十”(this無法改變)

特殊情況:obj 為 null/undefined

// 非嚴(yán)格模式:obj為null/undefined時,this綁定全局
sayInfo.call(null, 28, "廣州"); // 姓名:undefined(window.name為空)

// 嚴(yán)格模式:obj為null/undefined時,this綁定obj本身
function strictSayInfo() {
  "use strict";
  console.log(this);
}
strictSayInfo.call(null); // 輸出null
strictSayInfo.call(undefined); // 輸出undefined

2.5 場景 5:箭頭函數(shù)(無獨(dú)立 this)

調(diào)用形式const fn = () => { ... }(無function關(guān)鍵字)。
綁定規(guī)則:箭頭函數(shù)沒有獨(dú)立的 this,其 this 繼承自 “外層執(zhí)行上下文的 this”(定義時的外層,非調(diào)用時)。

核心特性:

  1. 無法通過apply/call/bind改變 this(綁定后仍為外層 this);

  2. 不能作為構(gòu)造函數(shù)(用 new 調(diào)用會報(bào)錯);

  3. 沒有arguments對象(需用剩余參數(shù)...args替代)。

代碼驗(yàn)證:

// 場景1:箭頭函數(shù)作為對象方法 → this繼承外層(window)
const obj = {
  name: "王十二",
  sayHi: () => {
    console.log(this.name); // undefined(this指向window)
  }
};
obj.sayHi();

// 場景2:箭頭函數(shù)嵌套在對象方法中 → 繼承方法的this
const obj2 = {
  name: "李十三",
  outer() {
    const inner = () => {
      console.log(this.name); // 繼承outer的this,指向obj2,輸出“李十三”
    };
    inner();
  }
};
obj2.outer();

// 場景3:箭頭函數(shù)無法被apply/call改變this
const arrowFn = () => {
  console.log(this);
};
arrowFn.call({ name: "張十四" }); // 輸出window(非嚴(yán)格模式),無法改變

// 場景4:箭頭函數(shù)不能作為構(gòu)造函數(shù)
const ArrowPerson = () => {};
new ArrowPerson(); // 報(bào)錯:ArrowPerson is not a constructor

適用場景:

  • 嵌套函數(shù)中需要繼承外層 this(如定時器、回調(diào)函數(shù));

  • 避免普通函數(shù)中 this 綁定全局的問題(如 React 類組件的事件回調(diào))。

2.6 場景 6:DOM 事件回調(diào)與 class 中的 this

(1)DOM 事件回調(diào)

調(diào)用形式dom.addEventListener('click', fn)

綁定規(guī)則:this 綁定到 “觸發(fā)事件的 DOM 元素”(即事件源)。

const btn = document.createElement("button");
btn.textContent = "點(diǎn)擊我";
document.body.appendChild(btn);

// 普通函數(shù) → this指向btn
btn.addEventListener("click", function() {
  console.log(this); // <button>點(diǎn)擊我</button>
});

// 坑點(diǎn):箭頭函數(shù) → this繼承外層(window)
btn.addEventListener("click", () => {
  console.log(this); // window(無法獲取btn)
});

(2)class 中的 this

綁定規(guī)則:class 內(nèi)部默認(rèn)啟用嚴(yán)格模式,方法中的 this 默認(rèn)綁定到實(shí)例,但脫離實(shí)例調(diào)用時為undefined。

class User {
  constructor(name) {
    this.name = name;
  }

  sayHi() {
    console.log(this.name);
  }
}

const user = new User("劉十五");
user.sayHi(); // 輸出“劉十五”(this指向?qū)嵗?

// 坑點(diǎn):方法賦值后調(diào)用 → 嚴(yán)格模式下this為undefined
const sayHi = user.sayHi;
sayHi(); // 報(bào)錯:Cannot read properties of undefined (reading 'name')

// 解決方案:在constructor中綁定this
class UserWithBind {
  constructor(name) {
    this.name = name;
    // 綁定this到實(shí)例
    this.sayHi = this.sayHi.bind(this);
  }

  sayHi() {
    console.log(this.name);
  }
}
const user2 = new UserWithBind("陳十六");
const sayHi2 = user2.sayHi;
sayHi2(); // 輸出“陳十六”(this已綁定)

三、避坑指南:8 個高頻 this 指向錯誤及解決方案

掌握規(guī)則后,還要能識別實(shí)際開發(fā)中的 “隱形陷阱”,以下是 8 個最容易踩的坑及解決方法。

3.1 坑 1:對象方法賦值給變量后調(diào)用,this 指向錯誤

錯誤代碼

const obj = {
  name: "趙十七",
  sayHi() {
    console.log(this.name);
  }
};
const hi = obj.sayHi;
hi(); // undefined(this指向window)

解決方案

  1. 直接通過對象調(diào)用:obj.sayHi()

  2. 用 bind 綁定 this:const hi = obj.sayHi.bind(obj); hi();

  3. 用箭頭函數(shù)包裹:const hi = () => obj.sayHi(); hi()。

3.2 坑 2:定時器回調(diào)中 this 指向全局

錯誤代碼

const obj = {
  name: "孫十八",
  delaySayHi() {
    setTimeout(function() {
      console.log(this.name); // undefined(this指向window)
    }, 1000);
  }
};
obj.delaySayHi();

解決方案

  1. 用箭頭函數(shù)(繼承外層 this):

    setTimeout(() => {
      console.log(this.name); // 輸出“孫十八”
    }, 1000);
    
  2. 保存 this 到變量:

    const self = this;
    setTimeout(function() {
      console.log(self.name); // 輸出“孫十八”
    }, 1000);
    

3.3 坑 3:數(shù)組 forEach/map 中的 this 指向錯誤

錯誤代碼

const obj = {
  prefix: "編號:",
  processArr(arr) {
    return arr.map(function(item) {
      return this.prefix + item; // undefined(this指向window)
    });
  }
};
obj.processArr([1, 2, 3]); // ["undefined1", "undefined2", "undefined3"]

解決方案

  1. 用箭頭函數(shù):

    arr.map(item => this.prefix + item);
    
  2. 傳 this 作為 forEach/map 的第二個參數(shù):

    arr.map(function(item) {
      return this.prefix + item;
    }, this); // 第二個參數(shù)綁定this
    

3.4 坑 4:class 方法作為事件回調(diào),this 為 undefined

錯誤代碼

class Button {
  constructor() {
    this.text = "點(diǎn)擊";
    this.btn = document.createElement("button");
    this.btn.textContent = this.text;
    this.btn.addEventListener("click", this.handleClick);
  }

  handleClick() {
    console.log(this.text); // undefined(this為undefined,嚴(yán)格模式)
  }
}
new Button();

解決方案

  1. constructor 中 bind 綁定:

    constructor() {
      // ...
      this.handleClick = this.handleClick.bind(this);
    }
    
  2. 用箭頭函數(shù)作為回調(diào):

    this.btn.addEventListener("click", (e) => this.handleClick(e));
    

3.5 坑 5:箭頭函數(shù)作為對象方法,this 指向錯誤

錯誤代碼

const obj = {
  name: "周十九",
  sayHi: () => {
    console.log(this.name); // undefined(this指向window)
  }
};
obj.sayHi();

解決方案

  • 放棄箭頭函數(shù),用普通函數(shù)作為對象方法:

    sayHi() {
      console.log(this.name); // 輸出“周十九”
    }
    

3.6 坑 6:構(gòu)造函數(shù)返回對象,this 被覆蓋

錯誤代碼

function Product(name) {
  this.name = name;
  // 錯誤:返回對象覆蓋this
  return { name: "默認(rèn)商品" };
}
const phone = new Product("手機(jī)");
console.log(phone.name); // 輸出“默認(rèn)商品”

解決方案

  1. 不返回對象,或返回 this:

    function Product(name) {
      this.name = name;
      return this; // 或不寫return
    }
    
  2. 若需返回額外數(shù)據(jù),掛載到 this 上:

    function Product(name) {
      this.name = name;
      this.extra = { price: 999 }; // 額外數(shù)據(jù)掛載到this
    }
    

3.7 坑 7:bind 多次綁定,只有第一次生效

錯誤代碼

function fn() {
  console.log(this.name);
}
const obj1 = { name: "吳二十" };
const obj2 = { name: "鄭二十一" };

// 多次bind,只有第一次生效
const bound1 = fn.bind(obj1);
const bound2 = bound1.bind(obj2);
bound2(); // 輸出“吳二十”(obj2綁定無效)

解決方案

  • 避免多次 bind,如需動態(tài)改變 this,用 apply/call(而非 bind)。

3.8 坑 8:嚴(yán)格模式與非嚴(yán)格模式混用,this 指向混亂

錯誤代碼

// 外層非嚴(yán)格模式
function outer() {
  "use strict"; // 內(nèi)層嚴(yán)格模式
  function inner() {
    console.log(this); // undefined(嚴(yán)格模式)
  }
  inner();
}
outer();

解決方案

  • 項(xiàng)目中統(tǒng)一嚴(yán)格模式(推薦),在入口文件或模塊頂部添加"use strict";

  • 避免函數(shù)內(nèi)部局部啟用嚴(yán)格模式,導(dǎo)致 this 行為不一致。

四、總結(jié):this 指向的判斷流程(萬能公式)

遇到任何 this 指向問題,都可以按以下步驟判斷,準(zhǔn)確率 100%:

  1. 函數(shù)是否為箭頭函數(shù)?
    → 是:this 繼承外層執(zhí)行上下文的 this(直接找外層 this);
    → 否:進(jìn)入下一步。

  2. 函數(shù)是否用 new 調(diào)用?
    → 是:this 指向新創(chuàng)建的實(shí)例;
    → 否:進(jìn)入下一步。

  3. 函數(shù)是否用 apply/call/bind 綁定?
    → 是:this 指向綁定的對象(obj 為 null/undefined 時,非嚴(yán)格模式綁全局,嚴(yán)格模式綁 obj);
    → 否:進(jìn)入下一步。

  4. 函數(shù)是否作為對象方法調(diào)用(obj.fn ())?
    → 是:this 指向調(diào)用方法的對象(obj);
    → 否:進(jìn)入下一步。

  5. 是否為嚴(yán)格模式(普通調(diào)用)?
    → 是:this 綁定到 undefined;
    → 否:this 綁定到全局對象(window/global)。

五、最后:this 的設(shè)計(jì)意義

為什么 JavaScript 要設(shè)計(jì) this?本質(zhì)是為了 “代碼復(fù)用”—— 讓函數(shù)可以在不同對象上調(diào)用,無需為每個對象重復(fù)定義相同邏輯。

比如一個sayHi函數(shù),通過 this 可以在不同用戶對象上復(fù)用,輸出不同用戶名:

function sayHi() {
  console.log(`Hi, ${this.name}`);
}

const userA = { name: "用戶A", sayHi };
const userB = { name: "用戶B", sayHi };

userA.sayHi(); // Hi, 用戶A
userB.sayHi(); // Hi, 用戶B

理解 this 的設(shè)計(jì)初衷,才能更好地運(yùn)用它。希望本文能幫你告別 “this 困惑”,寫出邏輯清晰、無隱藏 bug 的 JavaScript 代碼。

到此這篇關(guān)于JavaScript中this取值的文章就介紹到這了,更多相關(guān)JS this取值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 通過復(fù)制Table生成word和excel的javascript代碼

    通過復(fù)制Table生成word和excel的javascript代碼

    通過復(fù)制Table生成word和excel,個人感覺這個功能還是比較實(shí)用的,下面有個不錯的示例,希望對大家有所幫助
    2014-01-01
  • ES6新特性四:變量的解構(gòu)賦值實(shí)例

    ES6新特性四:變量的解構(gòu)賦值實(shí)例

    這篇文章主要介紹了ES6新特性之變量的解構(gòu)賦值操作,結(jié)合實(shí)例形式分析了ES6針對數(shù)組、對象等的解構(gòu)賦值操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-04-04
  • 跨瀏覽器通用、可重用的選項(xiàng)卡tab切換js代碼

    跨瀏覽器通用、可重用的選項(xiàng)卡tab切換js代碼

    今天一同學(xué)對我說“好吧,我準(zhǔn)備去學(xué)習(xí)”,我大驚,這老勾引我打dota的也去學(xué)習(xí),于是我好奇他學(xué)什么,他說要搞一個選項(xiàng)卡切換js
    2011-09-09
  • 使用JavaScript清除cookie的方法總結(jié)

    使用JavaScript清除cookie的方法總結(jié)

    在現(xiàn)代Web開發(fā)中,清除Cookie是維護(hù)網(wǎng)站用戶隱私和安全性的一個重要步驟,JavaScript提供了幾種方法來清除Cookie,包括直接刪除特定的Cookie、設(shè)置Cookie的過期時間為過去的時間點(diǎn)、以及使用第三方庫來輔助清除,本文將詳細(xì)的給大家介紹這些方法,需要的朋友可以參考下
    2025-04-04
  • 對layui中table組件工具欄的使用詳解

    對layui中table組件工具欄的使用詳解

    今天小編就為大家分享一篇對layui中table組件工具欄的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 小程序?qū)崿F(xiàn)訂單評價(jià)和商家評價(jià)

    小程序?qū)崿F(xiàn)訂單評價(jià)和商家評價(jià)

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)訂單評價(jià)和商家評價(jià)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • DatePickerDialog 自定義樣式及使用全解

    DatePickerDialog 自定義樣式及使用全解

    這篇文章主要介紹了DatePickerDialog 自定義樣式及使用全解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • JavaScript中實(shí)現(xiàn)PHP的打亂數(shù)組函數(shù)shuffle實(shí)例

    JavaScript中實(shí)現(xiàn)PHP的打亂數(shù)組函數(shù)shuffle實(shí)例

    這篇文章主要介紹了JavaScript中實(shí)現(xiàn)PHP的打亂數(shù)組函數(shù)shuffle實(shí)例,本文用2種方法實(shí)現(xiàn)了類似PHP的打亂數(shù)組函數(shù)shuffle函數(shù),需要的朋友可以參考下
    2014-10-10
  • jfinal與bootstrap的登錄跳轉(zhuǎn)實(shí)戰(zhàn)演習(xí)

    jfinal與bootstrap的登錄跳轉(zhuǎn)實(shí)戰(zhàn)演習(xí)

    這篇文章給大家分享jfinal與bootstrap之間的登錄跳轉(zhuǎn),具體內(nèi)容包含有點(diǎn)擊登錄彈出模態(tài)框、點(diǎn)擊登錄確認(rèn)按鈕后的validate、jfinal的validate、jfinal的session管理、ajax請求與返回信息處理、頁面間智能跳轉(zhuǎn)。感興趣的朋友跟著小編一起看看吧
    2015-09-09
  • 關(guān)于js中for in的缺陷淺析

    關(guān)于js中for in的缺陷淺析

    這篇文章主要介紹了js中for in的缺陷,有需要的朋友可以參考一下
    2013-12-12

最新評論

滁州市| 塔河县| 海伦市| 富川| 六安市| 上杭县| 公安县| 登封市| 涟源市| 晴隆县| 景谷| 剑河县| 乐昌市| 五大连池市| 麻栗坡县| 昭通市| 成武县| 淳安县| 靖远县| 公主岭市| 卓资县| 乌什县| 大新县| 股票| 梓潼县| 石林| 淮南市| 呼玛县| 南阳市| 墨竹工卡县| 东乌| 麻栗坡县| 江都市| 邹平县| 刚察县| 深圳市| 金塔县| 阿荣旗| 明水县| 阿巴嘎旗| 芜湖市|