avatar
js 的typeof基本上是broken# Programming - 葵花宝典
e*3
1
我记得之前打电话让涨额度,1K,2K的客服马上就给涨了。现在说不管多少都要
inquiry信用记录,真是麻烦。这样的inquiry对信用分会有影响吗?谢谢。
avatar
l*n
2
有没有更好的?
avatar
b*8
3
soft就没事的
avatar
c*n
4
如果是检查primitive type, 用typeof, 否则用instanceof。
如果是你自己的class/object, 在class当中加上classNamAnnotation property. 比如
var Animal = function(){
this.className = 'animal';
}
var dog = new Animal();
console.log(dog.className);
这样做比instanceof 更快。

【在 l**********n 的大作中提到】
: 有没有更好的?
avatar
e*3
5
就是不知道是hard pull还是soft pull。
问客服他们也说不清楚。

【在 b********8 的大作中提到】
: soft就没事的
avatar
l*n
6
不错

【在 c*****n 的大作中提到】
: 如果是检查primitive type, 用typeof, 否则用instanceof。
: 如果是你自己的class/object, 在class当中加上classNamAnnotation property. 比如
: var Animal = function(){
: this.className = 'animal';
: }
: var dog = new Animal();
: console.log(dog.className);
: 这样做比instanceof 更快。

avatar
n*t
7
可以用 underscore 判断类型,那个比较严谨,另一个办法是 constructor.name。

【在 l**********n 的大作中提到】
: 有没有更好的?
avatar
b*e
8
There are two problems with your approach:
1. You need to maintain the name space to be unique for each class. This
does not scale in big projects.
2. You don't handle subclass. For instance,
var dog = new Dog();
dog.instanceof(Animal); // true
dog.instanceof(Dog); // true
To resolve 1, you can simply use the class object itself rather than a name
as the unique identifier of the class.
To resolve 2, you can define a instanceof function yourself and keep
overriding it in subclasses.

【在 c*****n 的大作中提到】
: 如果是检查primitive type, 用typeof, 否则用instanceof。
: 如果是你自己的class/object, 在class当中加上classNamAnnotation property. 比如
: var Animal = function(){
: this.className = 'animal';
: }
: var dog = new Animal();
: console.log(dog.className);
: 这样做比instanceof 更快。

avatar
c*n
9
他原文没有提subclass。如果有的话自然也有一个名字。非得用instanceof的话就要这
么做
Dog.prototype.constructor = Dog;
用classnameannotation而不是用instanceof的原因是performance. 比较字符串比比较
prototype chain的constructor的内存地址快很多。至于是否有重名,那就多加注意,
多加前缀。同时用requirejs,不要把所有的东西都变成global. 我们的project 有上
千个class, 没有遇到过冲突。

name

【在 b***e 的大作中提到】
: There are two problems with your approach:
: 1. You need to maintain the name space to be unique for each class. This
: does not scale in big projects.
: 2. You don't handle subclass. For instance,
: var dog = new Dog();
: dog.instanceof(Animal); // true
: dog.instanceof(Dog); // true
: To resolve 1, you can simply use the class object itself rather than a name
: as the unique identifier of the class.
: To resolve 2, you can define a instanceof function yourself and keep

avatar
j*3
10
为什么会broken?。。。我咋就没broken呢
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。