相关疑难解决方法(0)

javascript中的唯一对象标识符

我需要做一些实验,我需要知道javascript中对象的某种唯一标识符,所以我可以看看它们是否相同.我不想使用相等运算符,我需要类似python中的id()函数.

这样的事情存在吗?

javascript

110
推荐指数
6
解决办法
10万
查看次数

对象没有hasOwnProperty方法(即它是未定义的) - IE8

这看起来很奇怪.

这是我在IE8控制台中的实验:

typeof obj1 // "object"
obj1.hasOwnProperty // {...}

typeof obj2 // "object"
obj2.hasOwnProperty // undefined
Run Code Online (Sandbox Code Playgroud)

关于什么可能导致这个问题的任何想法?

javascript internet-explorer-8 ie-developer-tools hasownproperty

27
推荐指数
1
解决办法
2万
查看次数

为什么Object.keys不是Object.prototype.keys?

我想知道为什么规范定义Object.keys而不是Object.prototype.keys?如果API一致,肯定会好得多,我想理解为什么不是这样.

还有其他方法Object.prototype,为什么不是这样呢?

javascript prototype key object javascript-objects

20
推荐指数
1
解决办法
2427
查看次数

如何在Array.prototype和Object.prototype上的javascript中定义方法,以便它不会出现在for循环中

我想在Array.prototype和Object.prototype上定义辅助方法.我目前的计划是做类似的事情:

Array.prototype.find = function(testFun) {
   // code to find element in array
};
Run Code Online (Sandbox Code Playgroud)

所以我可以这样做:

var arr = [1, 2, 3];
var found = arr.find(function(el) { return el > 2; });
Run Code Online (Sandbox Code Playgroud)

它工作正常,但如果我在循环中循环数组,for in方法显示为值:

for (var prop in arr) { console.log(prop); }
// prints out:
// 1
// 2
// 3
// find
Run Code Online (Sandbox Code Playgroud)

这将搞砸任何依赖于for in显示值的人(尤其是对象).更高版本的javascript具有内置于数组中的.map和.filter函数,但这些函数不会出现在for in循环中.如何创建更多不会出现在for in循环中的方法?

javascript function

12
推荐指数
2
解决办法
9907
查看次数

为什么有些数组方法依赖于全局Array对象?

我正在浏览数组上MDN文档,当我们想要测试一个对象是否是我们使用的数组时isArray().但是,它的使用与大多数其他方法非常不同.使用常规语法时会弹出一个错误:

console.log([1,2,3].isArray());  // TypeError: [1, 2, 3].isArray is not a function
Run Code Online (Sandbox Code Playgroud)

虽然这确实有效:

console.log(Array.isArray([1,2,3]))
Run Code Online (Sandbox Code Playgroud)

我不明白为什么isArray()(以及其他一些方法)依赖于某些全局对象而不是仅通过所讨论的对象可访问.为什么有些方法需要全局数组对象?

javascript arrays prototype

10
推荐指数
1
解决办法
457
查看次数

为什么没有将ES5 Object方法添加到Object.prototype?

ES5添加数量方法Object,这似乎打破的JavaScript的语义的一致性.

举例来说,在此之前的扩展,JavaScript API的身边总是围绕operarting 对象本身;

var arrayLength = [].length;
var firstPosInString = "foo".indexOf("o");
Run Code Online (Sandbox Code Playgroud)

...新的Object方法就像;

var obj = { };
Object.defineProperty(obj, {
    value: 'a',
    writable: false
});
Run Code Online (Sandbox Code Playgroud)

......当以下内容更加符合时:

var obj = { };
obj.defineProperty({
    value: 'a',
    writable: false
});
Run Code Online (Sandbox Code Playgroud)

任何人都可以冷静我的好奇心,为什么会这样?是否有任何代码片段会破坏?标准委员会是否就他们选择这种方法的原因进行了公开讨论?

javascript consistency ecmascript-5

6
推荐指数
1
解决办法
582
查看次数

Object.defineProperty() vs Object.prototype.property vs Object.property 什么时候用?

有人能给我一个关于何时使用 Object.defineProperty()、Object.prototype.property 和 Object.property 的好用例吗?

javascript prototype properties object defineproperty

5
推荐指数
1
解决办法
2228
查看次数

原型/对象语句和链遍历需要澄清

虽然仍在努力阅读"你不懂JS",但我开始有了好主意(喜欢这个系列).我想我已经掌握了原型,但我遇到了下面的代码.

   var myObject = {
     a:2
   };

   Object.getOwnPropertyDescriptor(myObject, "a");
Run Code Online (Sandbox Code Playgroud)

虽然我完全理解输出及其含义,但我试图使用我对原型的理解(或缺乏),并希望在下面做.

   myObject.getOwnPropertyDescriptor
Run Code Online (Sandbox Code Playgroud)

我认为它会向上遍历原型链最多的对象原型和获取方法,但事实证明,对象的原型没有这个(假设这不是对象的原型的一部分,我找了DOC,至少我不要把它看作原型的一部分,它说它是一种方法).因此,我假设这只是Object.getOwnPropertyDescriptor,而不是Object.prototype.getOwnPropertyDescriptor.

我是否正确理解了这一点,为什么Object的方法不适用于所有原型?

javascript

5
推荐指数
1
解决办法
62
查看次数

Object.method(o)和o.method()之间的区别

可能重复:
为什么是Object.defineProperty()而不是this.defineProperty()(对象)?

我注意到特定对象的所有方法都可以从实际的对象实例中调用,即,object.method();或者通过将对象Object.method()作为参数传递.例如:

var a = ['one', 2, 3, 'four'];
a.reverse();
// OR
Array.reverse(a);
Run Code Online (Sandbox Code Playgroud)

我似乎得到了同样的行为.我想知道差异是什么,什么时候会用到另一个?

javascript

3
推荐指数
1
解决办法
334
查看次数