我在客户端使用 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' 错误......
我需要帮助将以下 es6 循环转换为 es5 代码。
for (let [field_name, field] of impList) {
//// some code
}
Run Code Online (Sandbox Code Playgroud)
谢谢。
我想在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开箱即用.)
我从TS中收到此错误:
很清楚为什么会发生错误:
function outer(){
if (true) {
function inner(){ // nested function declaration
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我的问题是-为什么TS会抱怨这一点-在转换为ES5时应该避免一些技术原因,以避免嵌套函数声明吗?
函数表达式会是一个更好的选择,为什么?
我的期望是我用新的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) 有了教学兴趣,我想知道一种正确的方法来模拟对象创建的自动增量变量.
我把你放在我有一个封装的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中导入模块时,我们会使用导入的模块名称来污染全局名称空间:
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.js,foo并bar位于全局名称空间中,对吗?因此,假设我发布了此模块,有人在其HTML文件中使用了该模块,以及另一个还定义了变量foo和bar全局名称空间的脚本。那我们不会发生碰撞吗?
我想这可以通过将所有内容包装main.js在IIFE中来解决。但是,由于某种原因,ESLint对此有所抱怨,这使我怀疑IIFE是否不是保护全局名称空间的首选/推荐方法。
foo和污染bar吗?谢谢。
我正在尝试运行一组非常简单的量角器测试,但是,当我运行“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('量角器');
但是这些选项都没有任何区别!
任何人都知道这可能是什么?非常感谢。
我正在尝试使用普通函数或箭头函数导出 .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)
以下是我心中的几个问题。
如果推荐普通函数而不是箭头函数,那为什么不推荐我使用箭头函数。
如果箭头函数比普通函数更推荐,那为什么不推荐我使用普通函数。
我怎么理解推荐的,尤其是在这种导出函数的场景中?
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
ecmascript-5 ×10
javascript ×8
ecmascript-6 ×4
node.js ×2
typescript ×2
backbone.js ×1
class ×1
express ×1
foreach ×1
html ×1
module ×1
protractor ×1
react-native ×1