我对Javascript编程比较陌生。我正在编写一个示例,在从HTML调用对象的方法时遇到了困难。我怀疑这与方法的作用域或外部化有关,但我不确定。
index.html:
<script type="text/javascript">
var f = new Fred();
f.bar();
f.foo();
</script>
Fred.js:
function Fred() {
this.a = 1;
function foo() {
if (a == 1) {
a++;
}
var e = 0;
}
t
我正在努力改进我的Javascript基础知识,这样我就可以探索客户端框架(Knockout,角等),并在学习Node.js方面取得进展。
我带了一个简单的问题,我用它来教C#,我试图用Javascript来解决这个问题。
问题
为可能性百分比创建具有内部值的概率对象。例如,将产生2/5的概率,包括:
var firstOne = new Probability(40); // 2/5 is a 40% chance
不应通过实例变量访问该内部状态。概率函数/对象的目的是封装相互比较的能力:
var secondOne = new Probability(30);
var ar
我已经在网上搜索过了,但是我不能理解这个问题的答案。许多人对同一问题有不同的答案。我有点困惑。
为什么更喜欢原型继承而不是闭包,为什么它比闭包消耗更少的内存?
我在下面写了两个例子,这样你就对我所问的问题有了基本的了解。
var foo = function () {
this.bar = function () {
// do something
};
};
另一个是:
var foo = function () { };
foo.prototype.bar = function () {
// do something
};
我有以下JS代码:
var Item = function ()
{
this.property = '';
this.myfunction = function ()
{
var value = this.property;
};
};
但是,this没有指向定义类,所以值不会得到任何东西。
如何从我的函数内部访问this.property?
你能澄清我下面的误解吗?
如果JS中函数的执行上下文是在调用/调用函数时创建的,而不是在声明函数时创建的,那么在下面的代码中,内部是闭包吗?如果有,原因何在?inner还没有被调用,因为执行上下文是在调用时创建的,所以inner不可能存储对i的引用。
function foo(i) {
function inner() {
return i;
}
return inner;
}
var f = foo(3);
内部何时会引用foo的执行上下文?当它被调用时,还是在它被定义时?在上面的代码中,我还没有调用内部函数。
另外,如果您能解释一下JS在看到函数定义(与函数
我希望为我的web应用程序创建一个扩展api。
扩展文件示例:
function echoCustomHeaders(){
echo '<li><a href="./watever">Header Link</a></li>';
}
将有几个文件类似于示例扩展文件(具有相同的函数名,以便在编写插件时方便用户)。
for($x=0;$x<count($extension_files);$x++){
//This would obviosely break when it gets to the
最近,我一直在使用Groovy,以前也曾使用过JRuby,并且非常喜欢在它们的集合中使用.each{}闭包。
尽管如此,我还是觉得这只是访问者模式的语法糖。如果您将代码封装在类中的闭包体中,并使用访问者模式传递该类的实例,则似乎是完全相同的,尽管麻烦较少。
那么,还有其他我还没有看到的闭包功能使它们与访问者的模式有根本的不同,还是人们真的对这种语法糖那么兴奋?
在我看来,与其说是语言问题,不如说是图书馆问题。
下面是一个类似于Groovy中的each闭包的快速模拟Java列表。
public class ClosureList<E> extends ArrayList<E&
以下是js代码的两个示例:
A.函数_foo是在全局上下文中定义的
function _foo(){ //some code here
}
//... some unrelated code here
var foo = function(){
var result = _foo();
return result;
}
B.函数_foo是在函数上下文中定义的。
var foo = function(){
function _foo(){ //some code here
}
var result = _foo();
return re
我正在制作一个简单的JS树库,这样我就可以动态地为分层数据创建标记。
问:当我使用Tree构造函数返回一个新的对象实例时,为什么"var the = this;“保持私有呢?我很高兴“那”是私人的,但我不知道为什么是私人的。有什么想法?
function Tree(data, containerId) {
var that = this; // Private variable. Not returned by constructor, because... ???
this.data = data;
this.container = document.get