在JS,原来有5个值,6种可以判断,9原生内置在构造函数。
这569是js语言的基础。
5个原始值是数字、字符、布尔值、null、未定义的。
类型:数字、字符,可以判断布尔、对象、功能、定义。注意空数组,并tyopeof所有输出对象。
类不能区分数组和对象,如何判断呢使用object.prototype.tostring.apply()。
如果(valuetypeof值= = = 'object' value.constructor =阵)
上述检测,如果在不同的帧和窗口中创建的数组给出false,则窗口对象是不同的。
一个可靠的方法是如果(object.prototype.tostring.apply(价值)={对象数组} )
参数数组不是数组,但他只是一个具有长度成员属性的对象。
如下面的示例所示,参数不是一个公共数组。
复制代码代码如下所示:
var =函数(){()
var b = object.prototype.tostring.apply(参数);
console.log(B);
}
a({对象参数}); /输出
复制代码代码如下所示:
var =函数(){()
var;
var b = object.prototype.tostring.apply(C);
console.log(B);
}
a({对象数组}); /输出
如何是判断它是否是一个例子
原型中的属性是构造函数。
默认的原型属性是一个对象对象,可以将其设置为任何复杂值,忽略设置作为原始值。
虽然他是一个对象,他是特殊的,和圆形链条的每个实例构造函数的原型属性。有一个隐藏的链接实例构造函数的原型属性之间,这是实例的__proto__。同时,该实例的构造函数属性的构造函数构造函数获得原型。
但要使新的实例构造函数可以有构造函数的属性,它可以判断是。
复制代码代码如下所示:
Var(富=函数){ }
原型
无功fooinstance =新的Foo;
fooinstance。__proto__ = = = foo.prototype; / /真的
fooinstance.constructor = foo; / /真的
事实上,是判断是不是基于构造函数,但基于原型链,如下面的例子
复制代码代码如下所示:
Var(富=函数){ };
原型= { };
无功fooinstance = { };
fooinstance __proto__ = foo.prototype;
console.log(fooinstance instanceof Foo); / /真的
使用原始值,不要使用构造函数。
哪些值是false的:false
但是请注意下面的例子
复制代码代码如下所示:
var =布尔(false);
var =新布尔();
如果(一){ console.log();} / /不能输出
如果(B){ console.log(B);} / /布尔{ { { primitivevalue } }:假}新的相当于一个对象,不假
以上理论文章比较强,但这些都是javascript语言的基础,我们一定要弄清楚。