我有一个代码
function person() {
name = "David";
hello = function() {
console.log("I'm in hello");
};
}
我想从外面调用hello函数。我怎样才能实现它?
答案 0 :(得分:3)
将hello
(和name
)分配到this
中的person
:
function Person() {
this.name = "David";
this.hello = function() {
console.log("I'm in hello");
};
};
然后,您可以像这样访问函数:
var p = new Person();
p.hello();
this
将变量分配给Person
。这可以防止变量污染全局范围。
您还可以将参数传递给Person
:
function Person(name) {
this.name = name;
this.hello = function() {
alert("Hello! I'm " + this.name + '!');
};
};
var p = new Person("Fred");
p.hello();

答案 1 :(得分:2)
function person() {
this.name = "David";
this.hello = function() {
console.log("I'm in hello");
};
}
var personObj = new person();
personObj.hello ();
答案 2 :(得分:1)
你可以做的是:
function person() {
name = "David";
this.hello = function() {
console.log("I'm in hello");
};
}
var johnny = new person();
johnny.hello();
请参阅此文章:http://www.phpied.com/3-ways-to-define-a-javascript-class/
答案 3 :(得分:0)
function person() {
name = "David";
this.hello = function() {
console.log("I'm in hello");
};
}
var p = new person();
p.hello();
或
function person() {
var obj={};
obj.name = "David";
obj.hello = function() {
console.log("I'm in hello");
};
return obj;
}
var p = person();
p.hello();
答案 4 :(得分:-3)
这是为了您的好奇心和清晰度:)。
您已在函数内声明了全局变量。直到您执行该函数,全局变量将不会存在且无法访问。一旦你调用了函数,就会定义并正确初始化全局变量,然后你可以从javascript中的任何作用域调用它们。
function person() {
name = "David";
hello = function() {
console.log("I'm in hello");
};
}
现在,为了从外部调用hello而不使用此类或类模式,您必须首先对person
方法进行调用(方法执行)。看到这个:
person();
或console.log(person());
,但不是console.log(person);
然后您可以轻松拨打hello();
注意:这是出于David的理解目的。请不要使用 你的javascript中任意全局变量。