对Javascripttypeof和建议运营商使用的讨论
当写Javascirpt代码,两家运营商,类和实例,使用的时候。但!他们总是不能直接得到想要的结果。他们很纠结。一般来说,这两个操作符可能是Javascript中最大的设计缺陷,因为几乎不可能得到它们想要的结果。类型
注:类型返回一个字符串表达式的数据类型,返回的结果是用基本的数据类型,包括数字、布尔值、字符串、对象、定义、功能。
从观点来看,似乎没有问题。
下面的代码写入一个数值变量,和类型的结果是数。
复制代码代码如下所示:
var a=1;
console.log(typeof()); / / = >号码
如果数字类型构造函数是一个新的变量类型,之后是对象的结果。
复制代码代码如下所示:
var =新的数字(1);
console.log(typeof()); / / = >对象
上面的两个输出结果似乎没有问题,这在书中似乎是理所当然的,因为Javascript是这样设计的。
但!问题是,由于呼叫类型,我们应该准确地返回一个变量的类型,无论是直接创造价值或由类型构造函数,否则,你还做什么我!
所以:
复制代码代码如下所示:
var a=1;
var =新的数字(1);
A和B变量的确切类型应该是数字是所期望的结果。
确切的类型的信息被存储在该变量的内部属性的值,{ {类} },通过使用toString方法对object.prototype定义。
获取类型信息:
复制代码代码如下所示:
var a = 1;
var =新的数字(1);
console.log(object.prototype.tostring.call(一));
console.log(object.prototype.tostring.call(B));
输出:
复制代码代码如下所示:
{对象号}
{对象号}
是不是很直接,我们稍微处理一下,得到直接的结果:
复制代码代码如下所示:
var a=1;
var =新的数字(1);
console.log(object.prototype.tostring.call(一)。片(8,1));
console.log(object.prototype.tostring.call(B)。片(8,1));
输出:
数
数
那就是你想要的。
为了更好地使用,我们封装了一个方法来确定变量是否是某种类型。
复制代码代码如下所示:
功能(obj,型){
VaR的Clas = object.prototype.tostring.call(obj)。片(8、1);
返回对象!未定义的对象类= = null!=;
}
定义一个变量来做试验,第一次看到自己的类型的输出:
复制代码代码如下所示:
var = 1;
var =数字(1);
var;
新字符串(hello);
VaR C1 = {1,2,3};
VaR C2 =新的数组(1,2,3);
console.log(A1的类型:+型(A1));
console.log(A2的类型:+型(A2));
console.log(B1的类型:+型(B1));
console.log(B2的类型:+型(B2));
console.log(C1的类型:+型(C1));
console.log(C2的类型:+型(C2));
输出:
A1的类型:数字
A2:对象类型
B1的类型:字符串
B2的对象类型:
C1类:对象
C2的对象类型:
我们使用新的工作作为一种功能:
复制代码代码如下所示:
console.log(A1号:+(A1,数));
console.log(A2号:+(A2,数));
console.log(B1是字符串:+(B1,字符串));
console.log(B2字符串:+(B2,字符串));
console.log(C1阵:+(C1,阵));
console.log(C2阵列:+(C2,阵));
输出:
A1是数字:真的
A2是数字:真的
B1是字符串:真的
B2是字符串:真的
C1是数组:真的
C2是数组:真的
注:类是没用的,和实际使用的是检测变量是否已定义或已分配。
实例
一个对象是一个数据类型还是一个变量是一个对象的例子。
instanceof运算符不是用来比较两个内置类型变量,并用结果还不满意。
复制代码代码如下所示:
console.log(ABC是字符串); / /假
console.log(ABC实例对象); / /假
console.log(新的字符串实例的字符串(ABC)); / /真的
console.log(新的字符串实例对象(ABC)); / /真的
只有在比较自定义对象时,才能准确地反映关系。
复制代码代码如下所示:
函数(人){ }
函数(man){ }
man.prototype =新的人();
console.log(新)是人(人); / /真的
console.log(新)是人(人); / /真的