小编vik*_*ant的帖子

`Object`是JavaScript中的一个函数吗?

考虑这个功能:

function Foo(){
    var a = "3";
};
Run Code Online (Sandbox Code Playgroud)

根据__proto__ VS. JavaScript中的原型,

Foo.__proto__ = Function.prototype
Function.prototype.__proto__ = Object.prototype
Run Code Online (Sandbox Code Playgroud)

我理解了这一部分,但如果我在Google Chrome控制台中执行此操作:

Object.__proto__
output: ƒ () { /* native code */ }

Function.__proto__
output: ƒ () { /* native code */ }
Run Code Online (Sandbox Code Playgroud)

Q1:他们为什么指向功能?它们实际上是什么Function以及Object它们如何彼此不同,因为Object实际上是一个函数?:

typeof Object
"function"
Run Code Online (Sandbox Code Playgroud)

Q2:如果一切都是JavaScript中的对象,那为什么是Object函数?另外,如何在JavaScript中实际实现一个函数?在函数内声明的变量会发生什么?函数是否由JavaScript编译器转换为对象?

对不起,如果我错过了一些明显的事 我真的很困惑函数和对象在JavaScript中的实现方式.

javascript prototype

54
推荐指数
6
解决办法
4520
查看次数

为什么我不能设置使用'bind'创建的函数的'prototype'?

考虑以下代码:

function foo(something) {
  this.a = something;
}

var obj1 = {};

var bar = foo.bind(obj1);
Run Code Online (Sandbox Code Playgroud)

现在,以下语句不会执行:

bar.prototype.newprop = "new"; // Cannot execute this
Run Code Online (Sandbox Code Playgroud)

据我所知,每个函数都有一个原型对象.那为什么我们不能执行上述声明呢?

而bar确实是我们可以称之为的功能:

bar(2);
console.log(obj1.a); // 2
Run Code Online (Sandbox Code Playgroud)

javascript prototype

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

如何`new`操作符能够在Function.prototype.bind(..)中覆盖硬绑定

这是一个纯粹的理论问题.我从'你不知道js'学习javascript,我被困bind在JS 中的函数实现.考虑以下代码:

function foo(something) {
  this.a = something;
}

var obj1 = {};

var bar = foo.bind(obj1);
bar(2);
console.log(obj1.a); // 2

var baz = new bar(3);
console.log(obj1.a); // 2
console.log(baz.a); // 3
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我们绑定foo()obj1,所以thisfoo()属于obj1这就是为什么obj1.a变成2当我们调用bar(2).但是new操作员能够优先使用,obj1.a即使bar(3)被调用也不会改变new.

以下是MDN页面提供的polyfill bind(..):

if (!Function.prototype.bind) {
Function.prototype.bind = function(oThis) {
    if (typeof this !== "function") {
        // closest thing possible to …
Run Code Online (Sandbox Code Playgroud)

javascript new-operator

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

Nivo ResponsiveBar 中未显示数据的颜色

我的 React 应用程序中有一个ResponsiveBar组件,但颜色未按预期显示。我已遵循官方文档中的指南。数据如下所示:

{
  "data": [
    {
      "bucket": "Prospects Imported",
      "Oliver Queen": 10,
      "Oliver QueenColor": "hsl(177.06123087721252,18.89068530574307%,16.53273587631816%)",
      "Ray Palmer": 10,
      "Ray PalmerColor": "hsl(287.8197874078934,62.18829850513416%,13.604789291455033%)"
    },
    {
      "bucket": "Assigned",
      "Oliver Queen": 158,
      "Oliver QueenColor": "hsl(130.29946551632844,21.88588940442986%,85.78716216902176%)",
      "Ray Palmer": 2,
      "Ray PalmerColor": "hsl(192.1716868789712,1.8797192964029374%,7.158239130186517%)"
    },
    {
      "bucket": "Calls Made",
      "Oliver Queen": 24,
      "Oliver QueenColor": "hsl(164.04170858156496,47.95430493222506%,79.37512126292603%)",
      "Ray Palmer": 0,
      "Ray PalmerColor": "hsl(38.148811405937096,23.83917214972724%,37.366418973565544%)"
    },
    {
      "bucket": "Emails Sent",
      "Oliver Queen": 120,
      "Oliver QueenColor": "hsl(316.96830604521773,3.6081626612787465%,54.49458825991964%)",
      "Ray Palmer": 0,
      "Ray PalmerColor": "hsl(223.97078722168806,98.41710495281106%,47.3590863956761%)"
    },
    {
      "bucket": "Texts …
Run Code Online (Sandbox Code Playgroud)

bar-chart reactjs nivo-react

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

如何仅打印`this`对象的名称,而不是javascript中的内容?

考虑功能:

function foo() {
  console.log(this);
}

foo();
Run Code Online (Sandbox Code Playgroud)

如何只打印this对象的名称(窗口或全局......等),而不是它的内容?

javascript

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

如何在React和Webpack中使用建议的ECMAscript类语法?

我正在尝试学习ecmascript的提议类语法并将其与React一起使用,我已经使用带有webpack的babel成功地使用es6渲染了组件.现在我想在构造函数之外声明的类中使用实例属性.例如:

class MyComponent extends React.Component{
  constructor(props){
   super(props)
  }

  property1= "new property"; 
  func1= ()=>{
   }
  }
Run Code Online (Sandbox Code Playgroud)

在尝试执行此类操作时,我在'property1'和'func1'上收到错误"意外令牌".另外,我在webpack中使用babel预设的react和babel-preset-env插件.

我想限制在我的班级中使用"this"关键字,所以我认为较新的es7类可以实现,我该怎么做?任何帮助,将不胜感激.

编辑1:如答案所示,我包含了"babel-preset-stage-2"预设,我能够在类中包含构造函数之外的变量,但必须使用'this'来引用它们.

javascript reactjs webpack ecmascript-next

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