如何在javascript中读取undefined的属性

0 javascript

不知道我在这里做错了什么.它没有给我结果.

var dd= function(name){
    this.sayHello=function(){

        alert ("hello " + this.ss);
    }
    this.name=name;
}

dd("jack").sayHello();
Run Code Online (Sandbox Code Playgroud)

我正确地称它为好吗?什么是调试js的最佳工具

T.J*_*der 7

你的dd功能:

  1. 永远不要创建对象

  2. 永不退货 dd

  3. 指两个不同的属性(namess),设置一个但使用另一个

您对dd函数的调用似乎期望它创建并返回一个对象,并且似乎期望sayHello使用dd设置up(name)的相同属性.

所以:

var dd = function(name) {
  return {
    sayHello: function() {
      alert("hello " + this.name);
    },
    name: name
  };
};
dd("Jack").sayHello();
Run Code Online (Sandbox Code Playgroud)

或者,如果要使用new关键字,则可以执行以下操作:

var Dd = function(name) {
  this.name = name;
  this.sayHello = function() {
    alert("hello " + this.name);
  };
};
new Dd("Jack").sayHello();
Run Code Online (Sandbox Code Playgroud)

使用时new,对象由new运算符创建,new Dd(...)表达式的结果是new创建的对象(除非Dd返回不同的对象).

请注意,我将第一个字母大写.这是newJavaScript中构造函数(您调用的函数)的压倒性约定.

您还可以移动sayHello到将被指定为由其创建的对象的原型的对象new.被指定为原型的对象在DD.prototype属性上可用,因此:

var Dd = function(name) {
  this.name = name;
};
Dd.prototype.sayHello = function() {
  alert("hello " + this.name);
};
new Dd("Jack").sayHello();
Run Code Online (Sandbox Code Playgroud)

什么是调试js的最佳工具

所有现代浏览器都内置了功能齐全的调试器.通常可以通过按F12或Ctrl + Shift + I,或者当然可以从浏览器的菜单或汉堡按钮获得.你使用哪一个完全取决于你.我非常喜欢Chrome中的Dev Tools.