Javascript 有没有一些基本的例子可以帮助我理解函数是对象?
我正在学习javascript,我一直听到的一件事是“函数就是对象”。你能提供一些例子让我更好地理解这个概念吗?这里有一个关于jsBin的快速例子: 基本上,由于函数是对象,它们也可以具有属性和方法 编辑:JavaScript内联Javascript 有没有一些基本的例子可以帮助我理解函数是对象?,javascript,Javascript,我正在学习javascript,我一直听到的一件事是“函数就是对象”。你能提供一些例子让我更好地理解这个概念吗?这里有一个关于jsBin的快速例子: 基本上,由于函数是对象,它们也可以具有属性和方法 编辑:JavaScript内联 function test(){ return 'hello'; } test.method = function(){ return ' world'; }; document.write( test() + test.method() ); 输
function test(){
return 'hello';
}
test.method = function(){
return ' world';
};
document.write( test() + test.method() );
输出‘你好世界’ 是的,您可以编写一个函数:
function MyFunction()
{
}
但你也可以写作
var MyFunction = function()
{
}
您可以使用MyFunction()调用这两个函数代码>。每种方式都有不同的原因,都有各自的优点
示例1:该函数是全局可访问的,即使您可以在定义它之前访问它。
示例2:该函数本身是可扩展的
var MyFunction = function()
{
// private methods/properties for use inside object
var privateProperty = 'privatevalue';
var privateFunction = function()
{
return '';
}
// public methods/properties for use outside object
this.propertyName = 'value';
this.publicFunction = function()
{
return privateProperty;
}
}
您可以从函数中调用公共数据,就像调用对象一样
var myobject = new MyFunction()
myobject.publicFunction();
// returns privatevalue;
但是您无法访问privateProperty
var
myobject.privateProperty // will returned undefined variable privateProperty
您可以在对象(函数)中定义属性甚至方法/函数。
这是一个非常粗糙的碰撞,但我希望它能帮助你更多地理解它
var sayHi = function() {
console.log("hi!");
};
var anotherFunction = function(functionObject) {
functionObject();
};
函数“sayHi”作为对象作为参数传递到“anotherFunction”函数并被调用
anotherFunction(sayHi);
使用Chrome中包含的javascript控制台来观察这一点。带有参数的var函数的最简单示例
var x = function(message){
alert(message);
};
x('hello world');
x('hello again');
当然可以。下面是一些示例代码:
function Hello() {
alert(Hello.world);
}
Hello.sayHello = Hello;
Hello.world = 'Hello, world!';
Hello.sayHello.sayHello.sayHello.sayHello.sayHello();
请注意如何将属性分配给函数,并将其分配给自身并递归引用。它是一个对象,就像JavaScript中的大多数其他东西一样,您可以用它做任何事情。如果您以前见过prototype继承:
Function.prototype.alert = function() {
alert(this.apply(null, arguments));
};
function add(a, b) {
return a + b;
}
add.alert(1, 2); // Alerts 3
这里有很多-一个函数文本,本质上是一个没有名字的函数;原型遗传;功能方法;动态参数;作为this
的函数,您可以将JavaScript移到您的答案中吗?如果jsbin下降,答案就没有多大用处了。在您的示例中,this
不是指MyFunction
,它指的是全局对象(window
)。您可能需要区分公共变量在哪里。另外,还包括一个私有函数示例。@rampion我忘记了实例化对象。我很快写了这篇文章,感谢您在修改后的示例中提供的提示,new
,MyFunction
不是一个函数。我建议您阅读@andrewHitaker上的MDN指南。感谢andrew,您能为我推荐一个类似的指南来学习jquery吗?jquery自己的网站上有一个链接。这就是我讨厌Javascript的原因。谢谢-我打算把它作为我的展品A.;-)@彼得曼奇尼:嗯。。。为什么?我看这里没有问题。@PeteMancini-哪一部分?很多(如果不是全部的话)OO语言都可以让你做一个类似于sayHello.sayHello.sayHello
的例子。第二个例子一开始可能有点混乱,因为有两个不同的alert()
函数,但我仍然没有看到一个问题,如果你使用其他语言,这个问题会以某种方式消失…@minitech和nnnnnn(只能通知一个)这不是问题,这是清楚的。其他语言处理这个问题的可读性要高得多。当Javascript问世时,我开始使用它编程,它是一种非常简单但有用的脚本语言。这种迟钝的语法看起来和阅读起来都很糟糕。我的评论仅仅是指美学,我认为它是语言的一个重要组成部分。从1993年到几年前,我经常使用的Perl更糟糕。这并不是说它不是一种非常有用的语言。