From d192fb918b0e2aa8869de6dcc59de8464b6e879a Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Fri, 11 Dec 2020 18:59:39 -0500 Subject: dump 2020-12-11 --- .../javascript/reference/operators/instanceof/index.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'files/zh-cn/web/javascript/reference/operators/instanceof') diff --git a/files/zh-cn/web/javascript/reference/operators/instanceof/index.html b/files/zh-cn/web/javascript/reference/operators/instanceof/index.html index c97b2a72a4..d637cf41e1 100644 --- a/files/zh-cn/web/javascript/reference/operators/instanceof/index.html +++ b/files/zh-cn/web/javascript/reference/operators/instanceof/index.html @@ -20,7 +20,7 @@ translation_of: Web/JavaScript/Reference/Operators/instanceof

语法

-
object instanceof constructor
+
object instanceof constructor

参数

@@ -38,7 +38,7 @@ translation_of: Web/JavaScript/Reference/Operators/instanceof

instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

-
// 定义构造函数
+
// 定义构造函数
 function C(){}
 function D(){}
 
@@ -87,14 +87,14 @@ o3 instanceof C; // true 因为 C.prototype 现在在 o3 的原型链上
 
 

但是,使用对象文字符号创建的对象在这里是一个例外:虽然原型未定义,但 instanceof Object 返回 true

-
var simpleStr = "This is a simple string";
+
var simpleStr = "This is a simple string";
 var myString  = new String();
 var newStr    = new String("String created with constructor");
 var myDate    = new Date();
 var myObj     = {};
 var myNonObj  = Object.create(null);
 
-simpleStr instanceof String; // 返回 false, 检查原型链会找到 undefined
+simpleStr instanceof String; // 返回 false, 非对象实例,因此返回 false
 myString  instanceof String; // 返回 true
 newStr    instanceof String; // 返回 true
 myString  instanceof Object; // 返回 true
@@ -113,7 +113,7 @@ myDate instanceof String;   // 返回 false

下面的代码创建了一个类型 Car,以及该类型的对象实例 mycar. instanceof 运算符表明了这个 mycar 对象既属于 Car 类型,又属于 Object 类型。

-
function Car(make, model, year) {
+
function Car(make, model, year) {
   this.make = make;
   this.model = model;
   this.year = year;
@@ -128,13 +128,13 @@ var b = mycar instanceof Object; // 返回 true
 
 

要检测对象不是某个构造函数的实例时,你可以这样做

-
if (!(mycar instanceof Car)) {
+
if (!(mycar instanceof Car)) {
   // Do something, like mycar = new Car(mycar)
 }

这和以下代码完全不同

-
if (!mycar instanceof Car)
+
if (!mycar instanceof Car)

这段代码永远会得到 false!mycar 将在 instanceof 之前被处理,所以你总是在验证一个布尔值是否是 Car 的一个实例)。

-- cgit v1.2.3-54-g00ecf