标签: ecmascript-5

为什么 Chrome 和 FireFox 控制台打印“未定义”?

获取这个简单的测试对象并将其粘贴到控制台中。你会看到它说undefined。该对象正在工作,因为它还打印123,但是这是什么呢undefined

测试:

var Test = new (function(){
    return {
        get testing(){
            return "123";
        }
    }
});

console.log(Test.testing);
Run Code Online (Sandbox Code Playgroud)

控制台输出:

123
undefined
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-5

4
推荐指数
1
解决办法
4478
查看次数

angular.bind vs ECMAScript 5 .bind

使用angular.bind而不是ECMAScript 5的Function.prototype.bind有什么好处吗?

它只是一个支持旧版浏览器的垫片还是有一些优势?

javascript ecmascript-5 angularjs

4
推荐指数
1
解决办法
741
查看次数

ES5优于ES3的优势

也许这是一个基本问题,但它们之间有什么不同: - 一个开发了ES3支持的Web项目和一个开发了ES5支持的Web项目?

换句话说,如果您支持ES5,您可以为项目添加哪些增强功能?

ecmascript-5

4
推荐指数
1
解决办法
2211
查看次数

将数字转换为印度语言环境格式

我试图将数字转换123456.789为“印度语言环境格式”向导,1,23,456.789因为印度使用了成千上万的分隔符。

我可以用大约10-20行代码成功完成此操作,然后来到了MDN的这篇文章。

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString#Using_locales

您会看到第11行,他们在那里声明了一种将其转换的机制

// India uses thousands/lakh/crore separators
console.log(number.toLocaleString('en-IN'));
// ? 1,23,456.789
Run Code Online (Sandbox Code Playgroud)

但它不起作用(已在Chrome v49.0.2623和Safari中测试)

Output in safari:
123456.789

Output in chrome:
123,456.789
Run Code Online (Sandbox Code Playgroud)

但是它在Firefox中起作用

Output in Firefox:
1,23,456.789
Run Code Online (Sandbox Code Playgroud)

但是,当我阅读浏览器兼容性表时,有人说它在chrome v24 +中受支持

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString#Browser_compatibility

是错误还是我做错了什么?

// India uses thousands/lakh/crore separators
console.log(number.toLocaleString('en-IN'));
// ? 1,23,456.789
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-5

4
推荐指数
1
解决办法
2189
查看次数

C++11 正则表达式多次匹配捕获组

有人可以帮助我使用 C++11 中的 JavaScript (ECMAScript) 正则表达式提取 : 和 ^ 符号之间的文本吗?我不需要捕获它hw-descriptor本身 - 但它必须存在于该行中,以便该行的其余部分被考虑进行匹配。此外:p....^, 、:m....^:u....^可以按任何顺序到达,并且必须至少有 1 个存在。

我尝试使用以下正则表达式:

static const std::regex gRegex("(?:hw-descriptor)(:[pmu](.*?)\\^)+", std::regex::icase);
Run Code Online (Sandbox Code Playgroud)

针对以下文本行:

"hw-descriptor:pTEXT1^:mTEXT2^:uTEXT3^"
Run Code Online (Sandbox Code Playgroud)

这是发布在实时 coliru上的代码。它显示了我如何尝试解决这个问题,但我只得到 1 场比赛。我需要了解如何提取与前面描述的 pm 或 u 字符相对应的 3 个潜在匹配项。

#include <iostream>
#include <string>
#include <vector>
#include <regex>

int main()
{
    static const std::regex gRegex("(?:hw-descriptor)(:[pmu](.*?)\\^)+", std::regex::icase);
    std::string foo = "hw-descriptor:pTEXT1^:mTEXT2^:uTEXT3^";
    // I seem to only get 1 match here, I was expecting 
    // to loop through each of …
Run Code Online (Sandbox Code Playgroud)

c++ regex ecmascript-5 c++11

4
推荐指数
1
解决办法
2982
查看次数

使用私有/受保护/公共字段和方法扩展类

我正在尝试找到一种在 ES6 中创建类似抽象类的方法。到目前为止,我尝试的一切总是遇到语言和/或其语法的限制(也是我对原型设计的有限知识)。

基本的面向对象编程;我们声明一个类并扩展它。最终类必须访问其超类的某些字段和方法,但不是全部。它还改变了公共方法......

类声明应该是完美的封装,因此除了这段代码之外没有其他东西能够到达它(类似于命名空间)。


到目前为止,我在 ES5 中的实验是错误的......我非常感谢一些建议和帮助。

(function(){

    // ==================================

    function AbstractClass(params) {
        var _myParams = params;
        var _privateField = "Only AbstractClass can see me";
        this.publicField = "Everybody can see me";

        function privateFunc() {
            // Does private stuff
        }
    }
    AbstractClass.prototype.publicFunc = function() {
        // Does public stuff
        privateFunc(); // Works?
    }

    // ==================================

    function FinalClass(params) {
        // How to pass the params to the superclass?
    }
    FinalClass.prototype.publicFunc = function() {
        // Override and calls the superclass.publicFunc()?
        // …
Run Code Online (Sandbox Code Playgroud)

javascript prototype ecmascript-5 ecmascript-6

4
推荐指数
1
解决办法
3400
查看次数

如果对象有数字键,是否有任何现代方法可以在 Object.assign 中禁用排序?

例如:片段 img

var a = {1: '1', 2: '2'}
var b = {3: '3', 4: '4'}

Object.assign({}, a, b)
> {1: "1", 2: "2", 3: "3", 4: "4"}

Object.assign({}, b, a)
> {1: "1", 2: "2", 3: "3", 4: "4"}
Run Code Online (Sandbox Code Playgroud)

有没有办法禁用排序?

javascript ecmascript-5 ecmascript-6

4
推荐指数
1
解决办法
1229
查看次数

从 TypeScript 对象中删除动态键

在 TypeScript 中,克隆一个对象非常简单:

const a = {...b}

或克隆和更新

const a = {...b, c: 'd'}

例如,我有这个代码:

const a = {
    'something': 1,
    'e': 2,
};
const c = 'something';
delete a[c];
Run Code Online (Sandbox Code Playgroud)

有没有一种很好的方法来删除该对象的属性,而不是使用传统 delete a[c]方式?(当然也不是a[c] = undefined

javascript ecma ecmascript-5 typescript ecmascript-6

4
推荐指数
2
解决办法
6659
查看次数

有没有地方可以测试代码是否符合 ES5/安全?

有时我想知道我写的代码是否符合 ES5/安全。

示例:由于箭头函数,这将失败。

() => "something";
Run Code Online (Sandbox Code Playgroud)

我知道Babel可以解决这个问题。但有时我想测试一些案例。

有什么地方可以做到这一点吗?

javascript ecmascript-5

4
推荐指数
1
解决办法
1213
查看次数

使用 Webpack 将 TypeScript 转为 es5

我创建了一个非常简单的环境来试验 TypeScript 和 Webpack。我尽可能地遵循在线示例,但构建的输出包含() =>,它应该已更改为 ES5 语法。请注意,我没有使用 Babel - 据我所知,TypeScript 应该能够在没有它的情况下生成 ES5。

这是我的 package.json 的一部分:

  "devDependencies": {
    "ts-loader": "8.0.7",
    "typescript": "4.0.3",
    "webpack": "5.2.0",
    "webpack-cli": "4.1.0",
    "webpack-dev-server": "3.11.0"
  },
  "scripts": {
    "build": "webpack"
  },

Run Code Online (Sandbox Code Playgroud)

这是我的 tsconfig.json:

{
    "compilerOptions": {
        "outDir": "./dist/",
        "sourceMap": true,
        "noImplicitAny": true,
        "module": "es2020",
        "target": "ES5",
        "allowJs": true
    }
}
Run Code Online (Sandbox Code Playgroud)

这是 webpack.config.js:

const path = require('path');

module.exports = {
    entry: './src/index.ts',
    devtool: 'inline-source-map',
    module: {
        rules: [
            {
                test: /\.tsx?$/,
                use: 'ts-loader',
                exclude: /node_modules/,
            },
        ], …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-5 typescript webpack

4
推荐指数
1
解决办法
1938
查看次数