标签: ecmascript-5

Array.prototype 对象的 length 属性 - ES 5

function类型对象中,length属性表示类型对象所需的参数数量function。例如,在下面的可视化中,对象objectlength中的字段的值为。FunctionArray1

在此输入图像描述

在上面的可视化中,lengthfield 也是objectobject 类型的成员Array.prototype,其值为0

MDN说:

Array.prototype.length反映数组中元素的数量。

cars遵循下面的&bikes数组中的定义,

var cars = new Array("Saab", "Volvo", "BMW");
var bikes = ["Honda", "Yamaha"];
Run Code Online (Sandbox Code Playgroud)

cars.__proto__.lengthbikes.__proto__.length还是0

多个数组对象( cars, bikes) 不能共享与 中的属性相同的length属性值。lengthArray.prototype

1)

根据MDN,这是一个正确的定义吗?

2)

length如果不是,字段中的含义是什么Array.prototype

javascript javascript-objects ecmascript-5

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

使用 TypeScript 针对不同的 Javascript 版本

TypeScript 可以全局定位不同版本的 Javascript - 您可以在转译 ES3、ES5 或 ES6 之间切换。

我们必须支持 IE,所以 ES3 是我们的最低公分母。

然而,好的浏览器(如 Chrome)已经支持 ES6,并且能够通过优化运行明显更小的 ES6 代码。

因此,我想从同一个 TypeScript 源为 IE 提供 ES3,为 Chrome 提供 ES6。

  • 有没有办法让 TypeScript 转译多个 JS 文件(可能是*.es3*.es6或类似的东西),以便我们可以选择要提供的版本?(最好是 VS 2015)

  • 或者,在 C# 中,我可以访问 TypeScript 转译器以在运行时完成该步骤吗?

visual-studio ecmascript-5 typescript ecmascript-6 ecmascript-3

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

TypeScript“目标”和 Babel

我正在使用TypeScriptwith ,并且对将代码转换为代码Webpack有疑问。TypeScriptES5

target如果我理解正确的话,如果我将选项 (in tsconfig.json) 设置为ES5? ,我不需要任何 babel loader。正确的?

如果不是,那么差异在哪里?

ecmascript-5 typescript tsconfig webpack babeljs

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

Typescript:在类中扩展 Set 会导致错误(构造函数 Set 需要“new”)

我正在尝试对 Set 对象实现一些基本操作,如下所示

这是代码

export class Conjunto extends Set<any>{
  constructor(initialValues?) {
    super();
    return new Conjunto(initialValues);
  }

  isSuperset(subset) {
    //some code
  }
}
Run Code Online (Sandbox Code Playgroud)

你们有什么想法让它发挥作用吗?或者我做错了什么?

目前我正在使用这个人在这里找到的黑客

javascript ecmascript-5 typescript angular

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

为什么 Rails 不使用 webpacker 将 ES6 转译为 ES5?

将 ES6 JavaScript 添加到我的 Rails 项目后:

class SpinnerWindow {
  static show() {
    //...
  }

  static autoHideShow(timeout=1500) {
    //...
  }

  static hide() {
    //...
  }
}
Run Code Online (Sandbox Code Playgroud)

部署到 Heroku 时它仍然包含已编译的 ES6(不是 ES5!)

...</div>  </div></div>';class SpinnerWindow{static show(){...
Run Code Online (Sandbox Code Playgroud)

我已将所有需要的配置添加到.babelrc

{
  "presets": [
    ["env", {
      "modules": false,
      "targets": {
        "browsers": "> 1%",
        "uglify": true
      },
      "useBuiltIns": true
    }]
  ],

  "plugins": [
    "syntax-dynamic-import",
    "transform-object-rest-spread",
    "transform-es2015-arrow-functions",
    "transform-es2015-block-scoped-functions",
    "transform-es2015-block-scoping",
    "transform-es2015-classes",
    "transform-es2015-computed-properties",
    "transform-es2015-destructuring",
    "transform-es2015-for-of",
    "transform-es2015-function-name",
    "transform-es2015-literals",
    "transform-es2015-modules-commonjs",
    "transform-es2015-object-super",
    "transform-es2015-parameters",
    "transform-es2015-shorthand-properties",
    "transform-es2015-spread",
    "transform-es2015-sticky-regex",
    "transform-es2015-template-literals",
    "transform-es2015-typeof-symbol",
    "transform-es2015-unicode-regex",
    "transform-regenerator",
    "transform-async-to-generator",
    ["transform-class-properties", …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ecmascript-5 ecmascript-6 webpack babeljs

5
推荐指数
0
解决办法
684
查看次数

使用 Object.assign() 时如何忽略只有 getter 的属性?

我有一个没有定义类型的对象源,但代表一个类型对象。所以我正在使用 Object.assign(target, source)。但我的类具有 getter 属性(因为它们是其他属性的计算结果)。

一个例子:

source: {
  a: 1,
  b: 2,
  sum: 3
}

class SomeClass {
  a: number;
  b: number;

  get sum(): number {
    return a + b;
  }
}

someFunction() {
  let obj = new SomeClass();
  Object.assign(obj, source);
}
Run Code Online (Sandbox Code Playgroud)

在上述情况下,我收到错误: Cannot set property sum of [object Object] which has only a getter

有什么方法可以让 Object.assign() 忽略源对象中的这些属性吗?

ecmascript-5 typescript

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

我在 webpack.DefinePlugin 中定义的变量未定义

webpack.config.js

const path = require('path')
HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
  entry: './src/index.js',
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'index_bundle.js',
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ["@babel/preset-env", "@babel/preset-react"],
            plugins: ["@babel/plugin-proposal-class-properties"]
          }
        }
      },
      {
        test:/\.css$/,
        use:['style-loader','css-loader']
      }
    ]
  },
  plugins: [
    new webpack.DefinePlugin({
      APIHOST: JSON.stringify('test'),
      BLOCKCHAINHOST: JSON.stringify('test')
    }),
    new HtmlWebpackPlugin({
      template: './src/template.html'
    }),
  ]
}
Run Code Online (Sandbox Code Playgroud)

我定义了 2 个变量 APIHOST 和 BLOCKCHAINHOST,我尝试在 ReactJS App.js 中控制台记录它,如下所示

componentDidMount() {
    console.log(APIHOST)
}
Run Code Online (Sandbox Code Playgroud)

我收到的错误是 …

javascript ecmascript-5 ecmascript-6 reactjs webpack

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

create-react-app 保留了 ES5 之后的 JavaScript

我正在使用 create-react-app 的 TypeScript 风格:

npx create-react-app my-app --typescript
Run Code Online (Sandbox Code Playgroud)

当我构建应用程序时,捆绑包仍然包含 ES5 后的代码,例如 Symbol。我缺少什么?我的 tsconfig 文件:

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react"
  },
  "include": [
    "src"
  ]
}
Run Code Online (Sandbox Code Playgroud)

ecmascript-5 typescript create-react-app

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

Webpack 5“dependOn”和目标:“es5”似乎不兼容

我在使用“dependOn”条目参数时无法让 Webpack 5 输出 es5 兼容代码。

我使用 Babel 来转译我的代码,效果很好,但除非我将 webpack 目标设置为“es5”,否则 webpack 本身会输出不兼容的代码。

我正在使用入口参数“dependOn”,它的行为与目标:“web”的预期一致,但是一旦我将其更改为“es5”,我就会收到“来自 Terser 的 main.build.js 中的错误”和“意外的令牌” : punc(:) [main.build.js:3,9]”。

删除“dependOn”参数允许其编译,但随后我将供应商库添加到每个条目中。

这是重现该问题的最小 webpack 配置(注释掉 target: "es5" 或 dependentOn: "vendor" 修复它):

const path = require('path');

module.exports = {
    mode: "production",
    target: "es5",

    entry: {
        vendor: "./src/test.js",
        main: {
            dependOn: "vendor",
            import: ['./src/main.js']
        }
    },
    output: {
        filename: '[name].build.js',
        path: path.resolve(__dirname, 'dist')
    },

    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: {
                    loader: 'babel-loader'
                }
            }
        ]
    }
}; …
Run Code Online (Sandbox Code Playgroud)

ecmascript-5 webpack-5

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

为什么最后的输出是“3a:1”(严格为假)?

var a;
console.log('1 a: ' + a);
if (true) {
    a = 1;
    function a() { };
    a = 5;
    console.log('2 a: ' + a);
}
console.log('3 a: ' + a);
Run Code Online (Sandbox Code Playgroud)

输出是:

1 a: undefined
2 a: 5
3 a: 1
Run Code Online (Sandbox Code Playgroud)

我无法理解最后的输出“3 a: 1”。为什么不是“3 a:5”?

javascript ecmascript-5

5
推荐指数
0
解决办法
56
查看次数