对于Instance,我可以说我的isNullOrEmpty
函数定义如此。
String.prototype.IsNullOrEmpty = function (o) {
return o == null || o == '';
}
我希望能够说出这样的话:
var s = 'test';
s.isNullOrEmpty
并获得该字符串的false
或true
答案。
答案 0 :(得分:1)
使用语法调用函数时:
expression.function()
表达式的值将在this
中。所以你应该把它写成:
String.prototype.IsNullOrEmpty = function() {
return this == '';
};
正如评论中所提到的,它永远不会是null
。如果它是null,那么它不会是一个字符串,所以不会调用String.prototype
中的任何内容,除非你做了一些反常的事情:
Stirng.prototype.IsNullOrEmpty.call(null);
答案 1 :(得分:1)
只需使用
!str
因为空字符串是假的,空字符也是如此。 (但请注意,此方法对undefined
,布尔值为false或数值为0也会返回true。)
如果您确实想要将此测试称为字符串上的方法,则可以使"abc".isNullOrEmpty
工作(作为“属性”,不得不说isNullOrEmpty()
),并说:
Object.defineProperty(String.prototype, 'isNullorEmpty', {
get: function() { return this === ''; }
});
但是,如其他地方所述,在null
答案 2 :(得分:-1)
这不能用JavaScript完成。 null.anything
永远是一个错误
我假设您有.NET背景,因为.NET中的扩展方法确实以这种方式运行。但它不适用于JavaScript。
你唯一可以做的就是"string".isEmpty()
,但是你需要包含()
,因为JavaScript并没有足够的支持#34; getter属性"没有()
的工作。
为此,您需要:
String.prototype.isEmpty = function() { return this === ''; };