操纵对象的属性:将方法分配给属性

时间:2016-03-02 13:56:05

标签: javascript

为什么返回null

    var char = str.charAt(i);
    char.isSpace = /\s/.test(char);
    return char.isSpace;

虽然这会返回一个有效的布尔值?

    var char = str.charAt(i);
    var isSpace = /\s/.test(char);
    return isSpace;

1 个答案:

答案 0 :(得分:3)

var char = str.charAt(i);
// after this assignment char is a string (but not String Object)
char.isSpace = /\s/.test(char);
// 1. you can't assign a property to char, it's not an Object
// 2. if you could, you weren't assigning a method to char, but a value
return char.isSpace;
// so, char.isSpace is undefined

可以String(静态)或String.prototype分配方法,电子邮件:

String.isWhitespace = function (str) {return /\s/g.test(str);}
var char = str.charAt(i);
String.isWhitespace(char); //=> true/false

String.prototype.isWhitespace = function () {return /\s/g.test(str);}
var char = str.charAt(i);
char.isWhitespace(); //=> true/false
相关问题