国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Inhaltsverzeichnis
1. L?schoperator
2. Die internen Attribute von js
2.1 Datenattribut
2.2 Accessor-Eigenschaft
2.3 獲取內(nèi)部屬性
Heim Web-Frontend js-Tutorial Detaillierte Erl?uterung des L?schoperators und interner Attributinstanzen in js

Detaillierte Erl?uterung des L?schoperators und interner Attributinstanzen in js

Mar 31, 2018 pm 05:20 PM
delete javascript Beispiel

In diesem Artikel werden haupts?chlich die Beispiele für L?schoperatoren und interne Attribute in js ausführlich erl?utert. Bevor wir Configurable erkl?ren, schauen wir uns zun?chst eine Interviewfrage an:

a = 1;console.log( window.a ); 
// 1console.log( delete window.a ); 
// trueconsole.log( window.a ); 
// undefinedvar b = 2;console.log( window.b ); 
// 2console.log( delete window.b ); 
// falseconsole.log( window.b ); // 2

Wie aus dem Obigen hervorgeht Frage Der Unterschied zwischen den beiden: Wenn eine Variable nicht mit var deklariert wird, kann sie mit dem Schlüsselwort delete gel?scht werden, und der Wert ist beim erneuten Abrufen undefiniert. Wenn eine mit var deklarierte Variable gel?scht wird, kann sie nicht mit delete gel?scht werden , und der Wert bleibt gleich, wenn er erneut erhalten wird. Er ist 2.

1. L?schoperator

Wenn Sie l?schen, um eine Variable oder ein Attribut zu l?schen, wird ?true“ zurückgegeben, wenn der L?schvorgang erfolgreich ist, andernfalls wird ?false“ zurückgegeben. Wenn delete wie im obigen Beispiel die Variable a nicht l?schen kann, wird false zurückgegeben. Wenn delete die Variable b erfolgreich l?schen kann, wird true zurückgegeben.

Zus?tzlich zu den beiden oben genannten Situationen gibt es verschiedene andere h?ufig verwendete Variablen, die gel?scht werden k?nnen, und einige, die nicht gel?scht werden k?nnen. Machen wir uns keine Gedanken darüber, warum ein solches Ergebnis beim L?schen dieser Variablen auftritt. Hier betrachten wir nur den Rückgabewert:

L?schen Sie eines der Elemente im L?scharray:

// 使用for~in是循環(huán)不到的,直接忽略到該元素
// 使用for()可以得到該元素,但是值是undefinedvar arr = [1, 2, 3, 4];console.log( arr );             
// [1, 2, 3, 4]console.log( delete arr[2] );   
// true,刪除成功console.log( arr );             
// [1, 2, undefined, 4]

L?schen Sie das Funktionstyp-Variablen:

// chrome 不能刪除;火狐可以刪除function func(){
}
console.log( func );console.log( delete func );
console.log( func );

Funktion.l?nge l?schen, das ist die Anzahl der zu erhaltenden formalen Parameter:

function func1(a, b){
}console.log( func1.length );       
 // 2console.log( delete func1.length ); 
 // true,刪除成功console.log( func1.length );       
  // 0

Gemeinsame Variablen l?schen:

console.log( delete NaN );     
 // false,刪除失敗console.log( delete undefined );
 // falseconsole.log( delete Infinity ); 
 // falseconsole.log( delete null );     
 // true,刪除成功

Prototyp l?schen, anstatt Attribute auf dem Prototyp zu l?schen:

function Person(){
}
Person.prototype.name = "蚊子";console.log( delete Person.prototype );
 // false,無法刪除console.log( delete Object.prototype ); 
 // false

Beim L?schen der L?nge von Arrays und Strings:

var arr = [1, 2, 3, 4];console.log( arr.length );          
// 4console.log( delete arr.length );   
// false,刪除失敗console.log( arr.length );          
// 4var str = 'abcdefg';console.log( str.length );         
 // 7console.log( delete str.length );   
 // false,刪除失敗console.log( str.length );         
  // 7

Beim L?schen von Attributen in obj:

var obj = {name:'wenzi', age:25};console.log( obj.name );       
 // wenziconsole.log( delete obj.name ); 
 // true,刪除成功console.log( obj.name );        
 // undefinedconsole.log( obj );             
 // { age:25 }

Wenn Sie Attribute in einem Instanzobjekt l?schen, k?nnen Sie der folgenden Ausgabe entnehmen, dass beim L?schen von Attributen nur die Attribute des Instanzobjekts selbst gel?scht werden und die Attribute im Prototyp nicht gel?scht werden k?nnen Wenn Sie es erneut l?schen, kann es nicht gel?scht werden. Wenn Sie die Attribute oder Methoden der Attribute auf dem Prototyp l?schen m?chten, k?nnen Sie nur Person.prototype.name l?schen:

function Person(){    this.name = 'wenzi';
}
Person.prototype.name = '蚊子';var student = new Person();console.log( student.name );        
// wenziconsole.log( delete student.name ); 
// true,刪除成功console.log( student.name );        
// 蚊子console.log( delete student.name ); 
// trueconsole.log( student.name );       
 // 蚊子console.log( delete Person.prototype.name );
 // true,刪除成功console.log( student.name );       
  // undefined

2. Die internen Attribute von js

sind oben. Im Beispiel k?nnen einige Variablen oder Attribute erfolgreich gel?scht werden, w?hrend andere nicht gel?scht werden k?nnen. Was bestimmt also, ob diese Variable oder dieses Attribut gel?scht werden kann?

ECMA-262 5. Edition definiert die Eigenschaften von JS-Objekteigenschaften (wird in JS-Engines verwendet, nicht direkt von au?en zug?nglich). In ECMAScript gibt es zwei Arten von Eigenschaften: Dateneigenschaften und Zugriffseigenschaften.

2.1 Datenattribut

Ein Datenattribut bezieht sich auf einen Ort, der einen Datenwert enth?lt, an dem der Wert gelesen oder geschrieben werden kann. Dieses Attribut verfügt über 4 Merkmale, die sein Verhalten beschreiben:

. [[konfigurierbar]]: Gibt an, ob es mit dem L?schoperator gel?scht und neu definiert werden kann oder ob es als Accessor-Attribut ge?ndert werden kann. Der Standardwert ist true;
: Gibt an, ob das Attribut über eine For-In-Schleife zurückgegeben werden kann. Standardwert true;
. [[Beschreibbar]]: Gibt an, ob der Wert des Attributs ge?ndert werden kann. Standardwert true;
. [[Wert]]: Enth?lt den Datenwert dieses Attributs. Dieser Wert wird gelesen/geschrieben. Der Standardwert ist undefiniert; das Namensattribut ist beispielsweise im obigen Instanzobjekt ?Person“ definiert und sein Wert ist ?wenzi“. ?nderungen an diesem Wert sind ohnehin an dieser Stelle m?glich.

Objektattribute (der Standardwert ist true ) k?nnen Sie die Methode Object.defineProperty() aufrufen, die drei Parameter empf?ngt: das Objekt, in dem sich die Eigenschaft befindet, den Eigenschaftsnamen und ein Deskriptorobjekt (muss konfigurierbar, enummerierbar, beschreibbar usw. sein). Wert, es k?nnen ein oder mehrere Werte eingestellt werden).

lautet wie folgt:

var person = {};Object.defineProperty(person, 'name', {
    configurable: false,    // 不可刪除,且不能修改為訪問器屬性
    writable: false,        // 不可修改
    value: 'wenzi'          // name的值為wenzi});console.log( person.name);          // wenziconsole.log( delete person.name );  // false,無法刪除person.name = 'lily';console.log( person.name );         // wenzi

Es ist ersichtlich, dass weder das L?schen noch das Zurücksetzen des Werts von person.name wirksam wird. Dies liegt daran, dass der Aufruf der Funktion defineProperty die Eigenschaften des Objekts ?ndert Eigenschaften; es ist erw?hnenswert, dass sobald configurable auf ?false“ gesetzt ist, Sie ?defineProperty“ nicht mehr verwenden k?nnen, um es auf ?true“ zu ?ndern (die Ausführung meldet einen Fehler: Uncaught TypeError: Cannot redefine property: name);

2.2 Accessor-Eigenschaft

it Es enth?lt haupts?chlich ein Paar Getter- und Setter-Funktionen. Beim Lesen des Accessor-Attributs wird der Getter aufgerufen, um einen gültigen Wert zurückzugeben, und beim Schreiben des Accessor-Attributs wird der Setter aufgerufen neuer Wert; dieses Attribut hat die folgenden 4 Eigenschaften:

: Ob das Attribut durch den L?schoperator gel?scht und neu definiert werden kann; kann über eine for-in-Schleife gefunden werden;
: Wird beim Lesen von Eigenschaften automatisch aufgerufen, Standard: undefiniert;

Accessor-Eigenschaften k?nnen nicht direkt definiert werden und müssen wie folgt mit defineProperty() definiert werden:

Es gibt jedoch noch eine Sache, die beim Festlegen von Eigenschaften mit dem besondere Aufmerksamkeit erfordert Mit der Object.defineProperty()-Methode k?nnen Sie keine Zugriffseigenschaften (Set und Get) und Dateneigenschaften (beschreibbar oder Wert) deklarieren. Das hei?t, wenn für eine Eigenschaft ein beschreibbares oder ein Wertattribut festgelegt ist, kann diese Eigenschaft weder get noch set deklarieren und umgekehrt.
var person = {
    _age: 18};Object.defineProperty(person, 'isAdult', {
    Configurable : false,
    get: function () {        if (this._age >= 18) {            return true;
        } else {            return false;
        }
    }
});console.log( person.isAdult );  // true

如若像下面的方式進(jìn)行定義,訪問器屬性和數(shù)據(jù)屬性同時存在:

var o = {};Object.defineProperty(o, 'name', {
    value: 'wenzi',
    set: function(name) {
        myName = name;
    },
    get: function() {        return myName;
    }
});

上面的代碼看起來貌似是沒有什么問題,但是真正執(zhí)行時會報錯,報錯如下:

Uncaught TypeError: Invalid property. A property cannot both have accessors and be writable or have a value

對于數(shù)據(jù)屬性,可以取得:configurable,enumberable,writable和value;

對于訪問器屬性,可以取得:configurable,enumberable,get和set。

由此我們可知:一個變量或?qū)傩允欠窨梢员粍h除,是由其內(nèi)部屬性Configurable進(jìn)行控制的,若Configurable為true,則該變量或?qū)傩钥梢员粍h除,否則不能被刪除。

可是我們應(yīng)該怎么獲取這個Configurable值呢,總不能用delete試試能不能刪除吧。有辦法滴?。?/p>

2.3 獲取內(nèi)部屬性

ES5為我們提供了Object.getOwnPropertyDescriptor(object, property)來獲取內(nèi)部屬性。

如:

var person = {name:'wenzi'};var desp = Object.getOwnPropertyDescriptor(person, 'name'); // person中的name屬性console.log( desp );    // {value: "wenzi", writable: true, enumerable: true, configurable: true}

通過Object.getOwnPropertyDescriptor(object, property)我們能夠獲取到4個內(nèi)部屬性,configurable控制著變量或?qū)傩允欠窨杀粍h除。這個例子中,person.name的configurable是true,則說明是可以被刪除的:

console.log( person.name );         
// wenziconsole.log( delete person.name );  
// true,刪除成功console.log( person.name );         
// undefined

我們再回到最開始的那個面試題:

a = 1;var desp = Object.getOwnPropertyDescriptor(window, 'a');console.log( desp.configurable );   // true,可以刪除var b = 2;var desp = Object.getOwnPropertyDescriptor(window, 'b');console.log( desp.configurable );   // false,不能刪除

跟我們使用delete操作刪除變量時產(chǎn)生的結(jié)果是一樣的。

相關(guān)推薦:

JavaScript?delete操作符應(yīng)用實例_javascript技巧

Das obige ist der detaillierte Inhalt vonDetaillierte Erl?uterung des L?schoperators und interner Attributinstanzen in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276
WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erl?utert. 1. WebSocket-Technologie

So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript Dec 17, 2023 pm 02:54 PM

So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten L?sung entwickelt. In diesem Artikel wird erl?utert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Dec 17, 2023 pm 12:09 PM

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularit?t des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, k?nnen wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte ausw?hlt und eine Bestellung aufgibt

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das t?gliche Leben und die Entscheidungsfindung von gro?er Bedeutung. Mit der Weiterentwicklung der Technologie k?nnen wir genauere und zuverl?ssigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist h?ufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir h?ufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript Dec 17, 2023 am 09:39 AM

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erl?utert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript Jan 05, 2024 pm 01:37 PM

Einführung in die Methode zum Abrufen des HTTP-Statuscodes in JavaScript: Bei der Front-End-Entwicklung müssen wir uns h?ufig mit der Interaktion mit der Back-End-Schnittstelle befassen, und der HTTP-Statuscode ist ein sehr wichtiger Teil davon. Das Verstehen und Abrufen von HTTP-Statuscodes hilft uns, die von der Schnittstelle zurückgegebenen Daten besser zu verarbeiten. In diesem Artikel wird erl?utert, wie Sie mithilfe von JavaScript HTTP-Statuscodes erhalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist ein HTTP-Statuscode? HTTP-Statuscode bedeutet, dass der Dienst den Dienst anfordert, wenn er eine Anfrage an den Server initiiert

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Bildverarbeitungssystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Bildverarbeitungssystems Dec 17, 2023 am 08:41 AM

JavaScript ist eine in der Webentwicklung weit verbreitete Programmiersprache, w?hrend WebSocket ein Netzwerkprotokoll für die Echtzeitkommunikation ist. Durch die Kombination der leistungsstarken Funktionen beider k?nnen wir ein effizientes Echtzeit-Bildverarbeitungssystem erstellen. In diesem Artikel wird erl?utert, wie dieses System mithilfe von JavaScript und WebSocket implementiert wird, und es werden spezifische Codebeispiele bereitgestellt. Zun?chst müssen wir die Anforderungen und Ziele des Echtzeit-Bildverarbeitungssystems kl?ren. Angenommen, wir haben ein Kamerager?t, das Bilddaten in Echtzeit sammeln kann

See all articles