标签: ecmascript-5

Node.js/ express.js/ Backbone.js : req.body.keys 未定义?

我在客户端使用 Backbone.js,在服务器上使用 express.js,我正在尝试通过 Backbone 保存/放置模型更新。我没有对 Backbone.sync 做任何事情,所以它应该只是简单的旧 $.ajax。

在服务器上,我有一个简单的

app.put('my-url', function(req, res){
  req.body.keys.forEach( function(key){
    // do stuff with key
  });
});
Run Code Online (Sandbox Code Playgroud)

每次,我都会收到一条错误消息,说'无法调用未定义的方法'forEach',果然快速的console.log 显示req.body.keys 是未定义的。另一个快速的 console.logs 显示 Object.keys 和 'forEach' 都很好,那个 typeof req.body 是对象。

有人看到出了什么问题吗?我尝试了 JSON.parse(req.body) 并得到了著名的 'unexpected token o' 错误......

node.js ecmascript-5 express backbone.js

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

从 ES5 'for-each' 循环翻译 ES6 'for' 循环

我需要帮助将以下 es6 循环转换为 es5 代码。

for (let [field_name, field] of impList) {
//// some code
}
Run Code Online (Sandbox Code Playgroud)

谢谢。

javascript ecmascript-5 ecmascript-6

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

在React-Native中将指定的HTML标记之间的文本内容添加到UpCase

我想在React-Native应用程序中使用纯JavaScript将特定HTML标记的内容大写.

注意:这是一个React-Native应用程序.没有JS document,可用,也没有jQuery.同样,CSS text-transform: uppercase无法使用,因为它不会在Web浏览器中显示.

比方说,有以下HTML文本:

<p>This is an <mytag>simple Example</mytag></p>
Run Code Online (Sandbox Code Playgroud)

标签的内容<mytag>应转换为大写:

<p>This is an <mytag>SIMPLE EXAMPLE</mytag></p>
Run Code Online (Sandbox Code Playgroud)

我试过这段代码:

let regEx = storyText.match(/<mytag>(.*?)<\/mytag>/g)
if(regEx) storyText = regEx.map(function(val){
  return val.toUpperCase();
});
Run Code Online (Sandbox Code Playgroud)

但该map()函数仅返回匹配的内容,而不是整个字符串变量与转换后的部分<mytag>.

此外,match()如果未找到标记,则该方法将返回null.所以流畅的编程风格storyText.match().doSomething是不可能的.

由于有更多标记要转换,我可以理解一种可以将变量传递给正则表达式模式的方法.

任何提示要解决这个问题?

(此代码在React-Native-App中使用,react-native-html-view插件不支持text-transform开箱即用.)

html javascript ecmascript-5 ecmascript-6 react-native

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

TS为什么在函数体内抱怨函数声明

我从TS中收到此错误:

在此处输入图片说明

很清楚为什么会发生错误:

function outer(){

   if (true) {
        function inner(){    // nested function declaration

       }
   }   
}
Run Code Online (Sandbox Code Playgroud)

但是我的问题是-为什么TS会抱怨这一点-在转换为ES5时应该避免一些技术原因,以避免嵌套函数声明吗?

函数表达式会是一个更好的选择,为什么?

javascript ecmascript-5 typescript typescript2.2

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

第二个参数Object.create

我的期望是我用新的toString方法覆盖了Vehicle的toString方法.然而,这似乎不起作用,我不知道为什么.基于这篇文章看起来应该是https://strongloop.com/strongblog/an-introduction-to-javascript-es6-classes/(向下滚动到Class Extending)

function Vehicle(make, year) {
  this.make = make;
  this.year = year;
}

Vehicle.prototype.toString = function() {
  return this.make + ' ' + this.year;
};

var vehicle = new Vehicle('Toyota Corolla', 2009);

function Motorcycle(make, year) {
  Vehicle.apply(this, [make, year]);
}

Motorcycle.prototype = Object.create(Vehicle.prototype, {
  toString: function() {
    return 'Motorcycle ' + this.make + ' ' + this.year;
  }
});

Motorcycle.prototype.constructor = Motorcycle;

var motorcycle = new Motorcycle('harley', 2010);
console.log(motorcycle.toString()); //TypeError
Run Code Online (Sandbox Code Playgroud)

javascript class ecmascript-5

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

ES5 Javascript封装对象自动增量id

有了教学兴趣,我想知道一种正确的方法来模拟对象创建的自动增量变量.

我把你放在我有一个封装的Product""""class""""作为具有隐藏属性的对象的场景中.

(function() {

  var Product = (function() {
    function Product(name, description) {

      this.getName = function() {
        return name;
      };
      this.getDescription = function() {
        return description;
      };
      this.getProductId = function() {
        return productId;
      }
    }
    return Product;
  }());

  var p = new Product("Product1", "Should have id=1");
  var q = new Product("Product2", "Should have id=2");
  console.log(p);
  console.log(q);
})();
Run Code Online (Sandbox Code Playgroud)

在这段代码中,添加计数器的最佳方式是什么或者什么是每次我创建Product的新实例时,productId将具有连续值,并且每个对象都保留自己的.同时表示Id只能通过方法getProductId()访问.

提前致谢.

javascript ecmascript-5

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

JavaScript ES6模块:避免污染全局命名空间

背景

在JavaScript中导入模块时,我们会使用导入的模块名称来污染全局名称空间:

foo.js

export foo() {..};
export const bar = 3.14;
Run Code Online (Sandbox Code Playgroud)

index.js

import { foo, bar } from './foo.js';
Run Code Online (Sandbox Code Playgroud)

在中index.jsfoobar位于全局名称空间中,对吗?因此,假设我发布了此模块,有人在其HTML文件中使用了该模块,以及另一个还定义了变量foobar全局名称空间的脚本。那我们不会发生碰撞吗?

我想这可以通过将所有内容包装main.js在IIFE中来解决。但是,由于某种原因,ESLint对此有所抱怨,这使我怀疑IIFE是否不是保护全局名称空间的首选/推荐方法。

  1. 全局名称空间会被foo和污染bar吗?
  2. 如果是这样,我应该如何避免呢?

谢谢。

javascript module ecmascript-5

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

SyntaxError: Unexpected token { 尝试运行量角器测试时

我正在尝试运行一组非常简单的量角器测试,但是,当我运行“yarn e2e”命令时,出现以下错误:

import { browser } from "protractor";
   ^

SyntaxError: Unexpected token {
Run Code Online (Sandbox Code Playgroud)

protractor-config.ts 中出现错误的代码是:

import { browser } from "protractor";

exports.config = {
  allScriptsTimeout: 20000,

  specs: ['./spec/spec.ts'],

  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 720000
  },

  capabilities: {
    'browserName': 'chrome',
  },

  directConnect: true,

  framework: 'jasmine',

  SELENIUM_PROMISE_MANAGER: false,

  onPrepare: function () {
    browser.driver.manage().window().setSize(1280, 1024);
  }
}
Run Code Online (Sandbox Code Playgroud)

我试过的:

  • 改变

从“量角器”导入{浏览器};

const browser = require('量角器');

  • 在我的 tsconfig.json 中将 "target": "es5" 更改为 es6

配置文件

但是这些选项都没有任何区别!

任何人都知道这可能是什么?非常感谢。

javascript ecmascript-5 typescript ecmascript-6 protractor

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

node.js:导出普通函数还是箭头函数?

我正在尝试使用普通函数或箭头函数导出 .js 文件中的函数。但我不明白哪个是推荐的。

导出正常功能

module.exports = function(id) {
   console.log(id);
};
Run Code Online (Sandbox Code Playgroud)

导出箭头函数

const test = id => {
  console.log(id);
}
module.exports = test;
Run Code Online (Sandbox Code Playgroud)

以下是我心中的几个问题。

  1. 如果推荐普通函数而不是箭头函数,那为什么不推荐我使用箭头函数。

  2. 如果箭头函数比普通函数更推荐,那为什么不推荐我使用普通函数。

我怎么理解推荐的,尤其是在这种导出函数的场景中?

node.js ecmascript-5 ecmascript-6 arrow-functions

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

Javascript - forEach() 循环不适用于 IE11

forEach 循环应该在 IE11 和 diplay 中工作

对象不支持属性或方法“forEach”。

它应该可以工作,因为它是一个 ECMAScript-5 函数并且IE11 支持它

但是,我这里的代码不起作用:

var alltable = document.querySelectorAll('*[id^="table_"]'); //Select all elements with the id starting by "table_"
    alltable.forEach(function(element) {
                // Do some code
                });
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?

javascript foreach internet-explorer ecmascript-5 internet-explorer-11

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