我继承了另一个开发人员写的一些javascript代码.他不喜欢我们在整个项目中使用的网格组件,因此他决定编写自己的网格组件.他写的网格不能对日期进行排序,因为它只能绑定到字符串/数字.在使用之前,他将所有日期转换为字符串.我查看了他编写的日期函数的字符串格式,并认为我可以只使用原始值为字符串添加日期属性,然后在排序时查看字符串是否具有日期属性并基于此排序.但是,似乎您无法在javascript中向字符串添加属性.我不知道有些类型你不能添加属性.例如:
<html>
<script>
var test = "test";
test.test = "test inner";
console.log(test);
console.log(test.test);
</script>
Run Code Online (Sandbox Code Playgroud)
test.test将是未定义的.奇怪的.我的问题是为什么这段代码不起作用?而且,如果你能想到在该网格上排序日期的任何变通方法(除了实际绑定到日期对象而不是字符串,这将很难修复),这将是非常有用的.
可能是JavaScript中最不被理解的部分,站在原型链旁边.
所以问题是:怎么做......
new dataObj(args);
Run Code Online (Sandbox Code Playgroud)
...实际创建一个对象,并定义其原型链/构造函数/等?
最好是展示一个替代方案,以完全理解这个关键字.
在处理另一个问题时,我创造了这个小提琴:
function foo() {
// console.log(_.isBoolean(this));
console.log(this === true);
}
foo.call(true); // object:[object Boolean]
foo.apply(true); // object:[object Boolean]
Run Code Online (Sandbox Code Playgroud)
这是自动拳击的一个例子吗?
从值类型转到引用类型.
这是一个维基百科def.