相关疑难解决方法(0)

如何使用变量String创建JavaScript对象来定义类名?

这是我正在尝试做的 - 这是伪代码,不起作用.有谁知道如何实现这一目标:

// Define the class
MyClass = Class.extend({});

// Store the class name in a string
var classNameString = 'MyClass';

// Instantiate the object using the class name string
var myObject = new classNameString();
Run Code Online (Sandbox Code Playgroud)

javascript oop

65
推荐指数
7
解决办法
7万
查看次数

让let语句在全局对象上创建属性吗?

在JavaScript中,var声明在全局对象上创建属性:

var x = 15;
console.log(window.x); // logs 15 in browser
console.log(global.x); // logs 15 in Node.js
Run Code Online (Sandbox Code Playgroud)

ES6引入let了具有块范围的声明的词法作用域.

let x = 15;
{
   let x = 14;
}
console.log(x); // logs 15;
Run Code Online (Sandbox Code Playgroud)

但是,这些声明是否在全局对象上创建属性?

let x = 15;
// what is this supposed to log in the browser according to ES6?
console.log(window.x); // 15 in Firefox
console.log(global.x); // undefined in Node.js with flag
Run Code Online (Sandbox Code Playgroud)

javascript let ecmascript-6

41
推荐指数
3
解决办法
2863
查看次数

在JavasScript ECMAScript 6中从字符串创建对象

我想使用ES6创建对象工厂,但旧式语法不适用于新的.

我有下一个代码:

export class Column {}
export class Sequence {}
export class Checkbox {}

export class ColumnFactory {
    constructor() {
        this.specColumn = {
            __default: 'Column',
            __sequence: 'Sequence',
            __checkbox: 'Checkbox'
        };
    }

    create(name) {
        let className = this.specColumn[name] ? this.specColumn[name] : this.specColumn['__default'];
        return new window[className](name); // this line throw error
    }
}

let factory = new ColumnFactory();
let column = factory.create('userName');
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

javascript ecmascript-6 babeljs

10
推荐指数
3
解决办法
3848
查看次数

ES6课程:如何进行自省?

在ES5中,我可以检查window对象上是否存在"类"(构造函数):

if (window.MyClass) {
... // do something
}
Run Code Online (Sandbox Code Playgroud)

在ES6中,根据本文,全局声明的类是全局变量,但不是全局对象的属性(window在浏览器上):

但是现在还有全局变量不是全局对象的属性.在全局范围内,以下声明会创建此类变量:

  • let 声明
  • const 声明
  • 类声明

所以,如果我不能使用if (window.MyClass),有没有办法做同样的事情?

实际上有没有一个正确的方法来做到这一点,而不使用窗口对象?

javascript class introspection ecmascript-6

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

标签 统计

javascript ×4

ecmascript-6 ×3

babeljs ×1

class ×1

introspection ×1

let ×1

oop ×1