拎不清: this, prototype 与 var 的区别 var 为JS 定义变量的, 定义后赋值, 变量类型由赋值的类型决定,this 也就相当于JAVA中的 thisprototype 是指调用对象的原形,也就相当于函数来调用属性只是个人见解,可能有误。继续学习中... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 this 对象实例本身var 变量声明prototype 方法定义 var:就是定义变量。在你这里的意思是定义一个函数引用insertIter,指向一个匿名函数。由于是在函数内部定义,作用域也在函数内部,所以外部无法访问这个函数。var bt = new BinaryTree();bt.insertIter()是错误的。外部无法访问。你可以将其理解为c++中的private函数this:this代表当前的上下文环境。如果用this.inertIter = function(...)var bt = new BinaryTree();bt.insertIter()是正确的。外部可以访问。prototype:prototype表示原型对象,这个话题可多了。与上面调用类似,外部可以调用。但是很重要的区别在于:this定义的函数是在new的时候将匿名对象引用插入到每个对象中。而prototype定义的函数是定义的时候copy函数的引用到对象中。前者中每个对象都有自己的函数体,后者都是指向prototype中的引用。故一般定义类的时候都用prototype,这样对象多的时候,函数体也才一个。 var 定义的变量是局部的,类的其他函数里无法访问,但用prototype定义的可以比如var treeRoot_; var insertIter = function(data) { ***** } 如果在你在外面用下面语句定义类的另一方法treeRoot.prototype.other=function(){}那么它是无法访问你定义的变量 insertIter 的但通过prototype可以 多谢各位解惑在阅读了宝典<Profesional Professional> 和 "悟透javascript" 之后, 更加理解了其中的奥妙 var:就是定义变量。在你这里的意思是定义一个函数引用insertIter,指向一个匿名函数。由于是在函数内部定义,作用域也在函数内部,所以外部无法访问这个函数。var bt = new BinaryTree();bt.insertIter()是错误的。因为insertIter方法不是bt的成员变量,而且insertIter只能在其作用域内使用。外部无法访问。this:this代表当前的上下文环境。如果用this.inertIter = function(...)var bt = new BinaryTree();bt.insertIter()是正确的。外部可以访问。prototype:prototype表示原型对象,这个话题可多了。与上面调用类似,外部可以调用。但是很重要的区别在于:this定义的函数是在new的时候将匿名对象引用插入到每个对象中。而prototype定义的函数是定义的时候copy函数的引用到对象中。前者中每个对象都有自己的函数体,后者都是指向prototype中的引用。故一般定义类的时候都用prototype,这样对象多的时候,函数体也才一个。 浏览器及其交互性的对比 DZ 论坛图片展示效果提取 删除含有指定ID的table 一个控制弹出WEB页面大小的问题 用jquery或纯js如何获取某ifram中的某meta 经常看到span标签,有什么作用? 如何实现单元格大小的拖动 请问Javascript如何实现对注册表的读写? 救命啊。。。chrome下怎么弹出模式对话框啊。。不支持showModalDialog方法了。。窗口弹不出来。。。跪求啊。。。 小白求教 大神请进 谢谢~~!!!!! 张孝祥javascript视频的ppt课件 动态改变div内容问题。
var 变量声明
prototype 方法定义
就是定义变量。在你这里的意思是定义一个函数引用insertIter,指向一个匿名函数。
由于是在函数内部定义,作用域也在函数内部,所以外部无法访问这个函数。
var bt = new BinaryTree();
bt.insertIter()是错误的。外部无法访问。
你可以将其理解为c++中的private函数this:
this代表当前的上下文环境。
如果用this.inertIter = function(...)
var bt = new BinaryTree();
bt.insertIter()是正确的。外部可以访问。prototype:
prototype表示原型对象,这个话题可多了。
与上面调用类似,外部可以调用。
但是很重要的区别在于:this定义的函数是在new的时候将匿名对象引用插入到每个对象中。
而prototype定义的函数是定义的时候copy函数的引用到对象中。前者中每个对象都有自己的函数体,后者都是指向prototype中的引用。
故一般定义类的时候都用prototype,这样对象多的时候,函数体也才一个。
var treeRoot_;
var insertIter = function(data)
{
*****
} 如果在你在外面用下面语句定义类的另一方法
treeRoot.prototype.other=function(){
}
那么它是无法访问你定义的变量 insertIter 的但通过prototype可以
多谢各位解惑在阅读了宝典<Profesional Professional> 和 "悟透javascript" 之后, 更加理解了其中的奥妙
就是定义变量。在你这里的意思是定义一个函数引用insertIter,指向一个匿名函数。
由于是在函数内部定义,作用域也在函数内部,所以外部无法访问这个函数。
var bt = new BinaryTree();
bt.insertIter()是错误的。因为insertIter方法不是bt的成员变量,而且insertIter只能在其作用域内使用。外部无法访问。
this:
this代表当前的上下文环境。
如果用this.inertIter = function(...)
var bt = new BinaryTree();
bt.insertIter()是正确的。外部可以访问。prototype:
prototype表示原型对象,这个话题可多了。
与上面调用类似,外部可以调用。
但是很重要的区别在于:this定义的函数是在new的时候将匿名对象引用插入到每个对象中。
而prototype定义的函数是定义的时候copy函数的引用到对象中。前者中每个对象都有自己的函数体,后者都是指向prototype中的引用。
故一般定义类的时候都用prototype,这样对象多的时候,函数体也才一个。