javascript - 操作对象的属性 : assigning a method to a property

标签 javascript

为什么返回null

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

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

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

最佳答案

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

关于javascript - 操作对象的属性 : assigning a method to a property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35749221/

相关文章:

javascript - 在 javascript 的正则表达式中使用变量

javascript - 在c3js工具提示标题中显示条形图的总数

javascript - 更新购物车中的值

javascript - 离线时提示客户请求的策略

javascript - HTML 标签在另一个标签内循环

javascript - 让 promise 在 JavaScript switch/case 中工作

javascript - 保护 DIV 元素不在 TinyMCE 中被删除

javascript - 幻影 : take screenshot of the current page?

javascript - Javascript 中 Object.entries 的数组解构

javascript - 在 vue.js 中计算小计