老师我有一些疑问
1.
each(calculatorElem.btns, function (index, elem ) {
elem.onclick = function () {
updateSign(this.value);
outputResult(operate(this.title, calculatorElem.formerInput.value, calculatorElem.laterInput.value));
};
});
var operate = (function () {
function operate(name, num1, num2) {
if (!operation[name]) throw new Error('不存在名为' + name + '的运算方法!');
return operation[name](num1, num2);
}
})();
each函数中operate(this.title, calculatorElem.formerInput.value, calculatorElem.laterInput.value)的调用应该是调用的operate(这个是对象还是变量还是一个函数)里的operate函数吧,不明白为啥可以直接调用operate里面的operate,为什么不是operate.operate();
2.operate.addOperation = operation.addOperation;这样看来operate是一个对象吗,然后是创建一个新的属性addOperation用来存放operation.addOperation的地址吗,但是
operate.addOperation('mod', function (num1, num2) {
return num1 % num2;
})
调用的是一个方法,有点搞不清楚。关于this,operate.addOperation('mod', function (num1, num2)是不是此时传参的时候如果是this,那么将会在operate下创建新的运算函数,为了在operation下创建得把this改成operation,因为在
function operate(name, num1, num2) {
if (!operation[name]) throw new Error('不存在名为' + name + '的运算方法!');
return operation[name](num1, num2);
}
里面用的是operation里面的函数,必须创建在operation里。老师你看我理解的this改为operation对吗。
正在回答
同学你好,可以参考下方的解释再理解下
console.dir()可以显示所有的属性和方法。
可以使用console.dir(),方法查看一下,控制台(是有addOperation这个方法的):
同学可以再理解下
如果还有其他疑问,建议在问答区重新提问,便于同学后期查找总结
如果我的回答帮到了你,欢迎采纳,祝学习愉快~
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 467 份
- 解答问题 4826 个
本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星