问题标签 [ecmascript-5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
1554 浏览

javascript - (开源)JavaScript 原型 OO 示例

赏金编辑:

我正在寻找以原型 OO 范式(想想 Self)编写的代码。不是原型 OO 和经典 OO 的混合体。我不想看到通用的 OO 包装器,而只是简单地使用原型 OO 技术并且使用原型 OO 技术。

参考相关问题:

JavaScript 中的原型 OO

在上面的问题中,我主要关注的是

可以这样写原型OO吗?

我们是否需要构造函数和初始化逻辑,有哪些替代方案?

新问题:

基本上在大型开源项目中是否有javascript 原型 OO 的好例子?

澄清:

我将不得不澄清原型 OO的含义:

  • 没有课程。只有对象。
  • 类概念的模拟为零同样只有对象和克隆对象来创建新对象。

原型 OO 的进一步说明:

JavaScript 中的原型 OO 与经典 OO 仿真之间的区别是一个非常灰色的区域。这并不是说我重视避免经典的 OO。我想以学术方式自己学习原型 OO,而不学习经典 OO 仿真和原型 OO 的(可能更优化)组合。

这就是我“禁止”类的原因,只是为了让我能够以纯粹的方式看到这些技术并扩展我自己的 OO 工具包。

例子:

像 jQuery 这样的流行示例不符合第二个标准。对象是一jQuery大类仿真。它专注于从类中创建新对象,而不是克隆现有对象。

如果我真的知道使用“纯”原型 OO 的任何示例,我会向您展示。我相信 99% 的 JavaScript OO 受经典仿真的影响太大。

奖励积分

如果

  • 它的评论很好/记录在案
  • 有单元测试
  • 在github上。

我还将接受有关如何编写超出您琐碎的 hello world 应用程序的原型 OO 代码的文章/教程和示例。

0 投票
1 回答
1757 浏览

javascript - Chrome javascript绑定功能不一致

如果我浏览到 about:blank,请打开脚本控制台并输入以下内容:

响应显示 x.bind 是在本机代码中实现的:

但是,当我在我的 Web 应用程序的页面上拉起脚本控制台并执行相同的语句时,看起来 x.bind 不是本机实现的:

什么会导致这个实现像这样切换?我在我的 javascript 中设置的东西可能会导致这种情况吗?我在页面上使用 jQuery - 这会产生影响吗?

0 投票
4 回答
5845 浏览

javascript - 有什么理由在 JavaScript 中使用 Object.create() 或 new 吗?

new到目前为止,我一直在 JavaScript 中使用关键字。我一直在阅读Object.create,我想知道是否应该改用它。我不太明白的是我经常需要运行构造代码,所以我根本不知道Object.create它会如何工作,因为它不会触发任何函数运行。

谁能告诉我,在哪种情况下我应该使用Object.create而不是new

0 投票
5 回答
21818 浏览

javascript - 扩展 Object.prototype JavaScript

我不是在问这是否可以:

考虑到它搞砸了,几乎每个人都认为这是邪恶for(var i in obj)的。

真正的问题

忽略

  • 无能的浏览器(不支持的浏览器Object.defineProperty
  • 财产冲突或压倒一切的可能性

假设您有一些非常有用的方法,这是否被认为是错误/不道德的?

如果您认为上述内容是不道德的,那么他们为什么会首先实施该功能?

0 投票
1 回答
1274 浏览

javascript - Javascript - DOM 原型元素上的 getOwnPropertyDescriptor 和 defineProperty

我正在尝试捕获任何 IMG 标签的“src”属性上的读/写操作。为此,我尝试在 HTMLImageElement 对象上使用 getOwnPropertyDescriptor 和 defineProperty 函数(因为我想避免为每个 img 定义它们)我看到的关于 getOwnPropertyDescriptor 的内容:

关于上面 proto 元素的 defineProperty,我看到 getter/setter 函数只在 Chrome 中运行,但不是在我期望的时候运行,而且 getter 函数中的“this”是 DOM 窗口的原型。我的测试代码可以在 http://jsfiddle.net/yoav/tUekJ/找到

getOwnPropertyDescriptor 在这种情况下应该工作吗?我是否应该期望在 JS 访问“src”属性时触发 getter/setter 函数?

谢谢!

0 投票
1 回答
133 浏览

javascript - 如何在 JavaScript 中获得完全准确的值?

可能的重复:
巨大的整数 JavaScript 库

假设我想要2^1000的确切值。我应该如何获得全部价值?也许每次乘法完成时都将它存储在一个字符串中,但它最终仍会超过 10 位!有什么办法,还是 ECMAScript 不支持这个?

0 投票
3 回答
12809 浏览

javascript - JavaScript (ECMAScript 5) 教程

我听说 ECMAScript 5 现在得到了大多数最新浏览器的支持。有什么好的教程吗?我试着寻找自己,但我什么也没找到。ES5 文档是唯一的吗?我主要想知道新标准中贬值了什么。如果我避免这些,当我迁移到 ES5 时,我会感到宾至如归,而且我不会错过任何贬值的东西。

0 投票
4 回答
3357 浏览

javascript - null vs. undefined 以及它们在 JavaScript 中的行为

因此,在对 javascript 中 null 和 undefined 的实现进行了激烈的争论/辩论/讨论之后,我希望有人解释实现背后的原因以及为什么它们在某些情况下会有所不同。我觉得一些特别的问题令人不安:

  • null == undefined评估为true
  • null + 1等于 1 但undefined + 1等于NaN
  • if(!null)计算为真,if(null)计算为假,但null == false计算为假。

我已经阅读了规范并且我知道结果是如何达到的,我正在寻找规范这是规范的范式和原因。其中一些点,尤其是第二点,考虑到第一点,感觉非常不一致。

0 投票
3 回答
363 浏览

javascript - 为什么 Function.bind("foo").call("bar") 总是将此引用为“foo”?

我刚刚在 JS 中经历了一个我无法理解的行为:我想创建一个调用 String.prototype.replace 并给出一些参数的方法,因此我想出了:

我猜我会得到一个函数,我只需要输入一个字符串就可以得到我的替换。相反,我总是得到返回的初始this值(在这种情况下foo)。

现在我的问题是:

  • 为什么 JS 会这样?bind 真正返回的是什么,我怎样才能得到this-parameter .call()
  • 有没有另一种方法可以在不创建包装函数的情况下做我想做的事情?
0 投票
2 回答
13863 浏览

javascript - Function.prototype.bind

I've got pretty interesting question about EcmaScript-5 Function.prototype.bind implementation. Usually when you use bind, you do it this way:

Okay so that's cool, but what is suppose to happen when we do this?

I understand that it's completely logical behavior in terms of how Function.prototype.bind is implemented (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind). But in real life conditions it's completely useless behavior isn't it? The question is: is it bug or feature? If it's a bug, why it's nowhere mentioned? If it's a feature, why then Google Chrome with native "bind" implementation behaves absolutely the same way?

To make it more clear, what in my opinion would make more sense, here is the code snippet that implements Function.prototype.bind a little bit differently:

So now try this:

In my opinion, replacing "this" makes more sense...

So what do you guys think about it?