我正在尝试自己创建一个javascript框架(所以没有jquery,mootools...代码),我想让我的框架的代码只在框架函数中可访问,例如,类似于:
frameworkname({
//framework code here
});因此,我的框架代码不会与其他框架冲突。我知道frameworkname({});是一个函数,但我不知道如何将代码作为函数参数传递。我知道这是可能的,因为我对jquery很有经验,而且jquery到处都有类似的东西(例如:$(document).ready(function(){//codehere});),但是jquery开发人员是如何做到这一点的呢?我希望能够为我的框架做到这一点。任何帮助都是非常感谢的。
发布于 2011-09-11 23:11:13
函数是JavaScript中的第一类对象。您可以通过与字符串、数字、数组或任何其他数据类型相同的方式传递它们。
var foo = function () { alert(1); };
var bar = function (arg) { arg(); }
bar(foo);发布于 2011-09-11 23:14:24
在javascript中,函数就是一个变量,就像你提到的代码:
$(document).ready( function () {//code});实际上是声明了一个没有名称的函数,然后将其作为参数传递给"ready()“。因此,你的心智中的密码要以某种方式发挥作用
frameworkname( {} );是非法的,因为"{}“是一个代码块,而不是任何类型的”变量“
发布于 2011-09-11 23:18:00
在JavaScript中,变量可以表示任何数据类型。因此,在function frameworkname( x ) { }中可以接受任何类型的参数(函数、对象、原语等)。
function frameworkname( x ) {
if ( typeof x === "function" ) {
x(); // function passed
} else if ( typeof x === "object" ) {
for ( var i in x ) {
// Object passed
x[i]();
}
}
}
frameworkname(function() {
alert("function passed as argument");
});
frameworkname({
hello: function() {
alert("hello");
}
});https://stackoverflow.com/questions/7379106
复制相似问题