问几个小白问题,求指点下,迷糊了 function A(){this.a="a";this.b="b";this.c="c";}var A={ a:"a", b:"b", c:"c",}这两种初始化的方法有什么不一样,(除了后期的调用一个不要初始化一个要初始化的) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这两根本不是一个东西嘛..怎么比较呢..一个是构造函数,一个对象直接量!构造函数是用来创建对象实例的,相当于一个工厂!可以创建N个对象!function A(){this.a="a";this.b="b";this.c="c";}var a1=new A();var a2=new A();var a3=new A();........这样a1,a2,a3...等等都是一个独立的对象var A={ a:"a", b:"b", c:"c",}实际上相当于var A=new Object();//这里的new Object()相当于上面的new A(); 被搞晕。。 showPic.show("picT","pic","num","2000");//var showPic = { fatherClassName: "picT", picClassName: "pic", numClassName: "num", speed:"2000", show: function() { var fatherClassName = arguments[0] || this.fatherClassName; var picClassName = arguments[1] || this.picClassName; var numClassName = arguments[2] || this.numClassName; var speed = arguments[3] || this.speed; $("." + fatherClassName + " ." + numClassName + " li").click(function() { $active = $(this); clearInterval(play); rotate(); return false; }); $("." + picClassName + " a").hover(function() { clearInterval(play); }, function() { rotateSwitch(); }); var rotate = function() { picIndex = $active.text() - 1; $active.siblings().removeClass('on'); $active.addClass('on'); $("." + fatherClassName + " ." + picClassName + " li").hide(); $("." + fatherClassName + " ." + picClassName + " li:eq(" + picIndex + ")").show(); }; var rotateSwitch = function() { play = setInterval(function() { $active = $("." + fatherClassName + " ." + numClassName + " li.on").next(); if ($active.length === 0) { $active = $("." + fatherClassName + " ." + numClassName + " li:first"); } rotate(); }, speed); }; rotateSwitch(); },};用对象写的 被批斗了其实我到现在还没有搞明白那2个有什么去呗?对象 构造还是? 看来楼主面向对象的知识一点也无,类和对象的区别没搞明白,从js给你讲是讲不明白,直接讲面向对象的基础知识:类就是一种东西,比如说电脑对象是一个东西,比如说你那台电脑.你那台电脑就是电脑那个类的一个对象,这样明白了么?你那台电脑怎么来的?是按照电脑这种东西的制造过程制造的吧.把这个过程看做构造函数,就理解你的问题了可以通过制造电脑的过程制造无数电脑,也就是说可以根据构造函数A构造无数个A的对象,而var A={ a:"a", b:"b", c:"c",}只是一个和构造函数A构造的对象拥有相同属性的对象而已就好比你用一个过程A构造了一台电脑a,但别人用另外的方式B制造了与a完全相同的电脑b,但是拿电脑b与制造电脑的过程A来对比,有可比性么? 迷糊。function showPic(a, b, c, d) { this.fatherClassName = a; this.picClassName = b; this.numClassName = c; this.speed = d;}showPic.prototype={ show: function() { var fatherClassName =this.fatherClassName; var picClassName = this.picClassName; var numClassName =this.numClassName; var speed = this.speed; $("." + fatherClassName + " ." + numClassName + " li").click(function() { $active = $(this); clearInterval(play); rotate(); return false; }); $("." + picClassName + " a").hover(function() { clearInterval(play); }, function() { rotateSwitch(); }); var rotate = function() { picIndex = $active.text() - 1; $active.siblings().removeClass('on'); $active.addClass('on'); $("." + fatherClassName + " ." + picClassName + " li").hide(); $("." + fatherClassName + " ." + picClassName + " li:eq(" + picIndex + ")").show(); }; var rotateSwitch = function() { play = setInterval(function() { $active = $("." + fatherClassName + " ." + numClassName + " li.on").next(); if ($active.length === 0) { $active = $("." + fatherClassName + " ." + numClassName + " li:first"); } rotate(); }, speed); }; rotateSwitch(); },}楼上的-,-能详细指点下么? 或者 你的意思是不合适 var a{} 定义的 相当于function A() new的一个实例? 没问题啊。你不是说我的电脑相当于电脑类中的一个么?用var 的不就是一台电脑么?用function 的不就是一个电脑类吗?是这意思么? 没有关系的东西,var a={} 不是function A()的实例,因为它不是A构造出来的你可以理解为A构造出的东西还能用其他方式做出相同的东西{}配置对象,是js里面直接写对象的方式var a={} 相当于 var a=new Object();var a={a:"a"} 相当于var a=new Object();a.a="a"; 更好的做法是showPic.prototype.show = function() { //... //...}采用默认的prototype,然后再往里面添加东西。否则(new showPic).toString()这种最基本的操作都没有。如果觉得写得代码不够多,toString()这种自己写也无所谓。 其实我明白你的意思。像上面的 var a=new showPic (1,1,1,1)中 a是 showPic的一个 实例么。这个我懂。但我想知道我帖的2段 代码都实现了同一个功能,有什么区别? 第一段采用默认的prototype,就是Object.prototype,可以使用Object.prototype里面的所有properties。第二段指定了一个prototype,里面只有一个property,就是show。 区别就在第一段代码 showPic已经是一个对象变量,可以调用其属性和方法而第二段代码showPic是构造函数,可以构造多个不同的对象具体差别你从面向对象的知识上去找,或者自己写写控件,看看你的第一种方式能写出控件来么? 自己看看上面的内容再做结论吧我写一个对象var obj={a:'a'};function A={this.a="a";}var a=new A();obj与a有相同的成员,只是构造方式有差别,但能说obj是A的实例么? 这个明白。a才是A的实例。obj是与a一样有相同属性的而已原理已经搞明白了。但在后期的使用上面,有什么问题? 跪求高手帮解决下,读取SQLite后,动态加载列表出现的不同步问题 Ext form checkbox 触发点击事件 jquery怎样获取任意div下任意div中的值 关于中文乱码问题 求助,怎么给table的id号赋值? 我是新手,求几个关于JaveScript代码的写法,最好有注释,谢谢了 on click事件? 有用jatoolsPrinter的吗,有问题请教! 如何用script得到网页上用户选中内容中的所有连接的target url? 如何让网页自动填写表单并且自动提交!! position:fixed div如何居中 修改div的位置
构造函数是用来创建对象实例的,相当于一个工厂!
可以创建N个对象!
function A(){
this.a="a";
this.b="b";
this.c="c";
}
var a1=new A();
var a2=new A();
var a3=new A();
........
这样a1,a2,a3...等等都是一个独立的对象
var A={
a:"a",
b:"b",
c:"c",
}
实际上相当于
var A=new Object();//这里的new Object()相当于上面的new A();
被搞晕。。
showPic.show("picT","pic","num","2000");
//
var showPic = {
fatherClassName: "picT",
picClassName: "pic",
numClassName: "num",
speed:"2000",
show: function() {
var fatherClassName = arguments[0] || this.fatherClassName;
var picClassName = arguments[1] || this.picClassName;
var numClassName = arguments[2] || this.numClassName;
var speed = arguments[3] || this.speed;
$("." + fatherClassName + " ." + numClassName + " li").click(function() {
$active = $(this);
clearInterval(play);
rotate();
return false;
});
$("." + picClassName + " a").hover(function() {
clearInterval(play);
}, function() {
rotateSwitch();
});
var rotate = function() {
picIndex = $active.text() - 1;
$active.siblings().removeClass('on');
$active.addClass('on');
$("." + fatherClassName + " ." + picClassName + " li").hide();
$("." + fatherClassName + " ." + picClassName + " li:eq(" + picIndex + ")").show();
};
var rotateSwitch = function() {
play = setInterval(function() {
$active = $("." + fatherClassName + " ." + numClassName + " li.on").next();
if ($active.length === 0) {
$active = $("." + fatherClassName + " ." + numClassName + " li:first");
}
rotate();
}, speed);
};
rotateSwitch();
},};
用对象写的 被批斗了
其实我到现在还没有搞明白
那2个有什么去呗?
对象 构造还是?
类就是一种东西,比如说电脑
对象是一个东西,比如说你那台电脑.
你那台电脑就是电脑那个类的一个对象,这样明白了么?
你那台电脑怎么来的?是按照电脑这种东西的制造过程制造的吧.把这个过程看做构造函数,就理解你的问题了
可以通过制造电脑的过程制造无数电脑,也就是说可以根据构造函数A构造无数个A的对象,而var A={
a:"a",
b:"b",
c:"c",
}只是一个和构造函数A构造的对象拥有相同属性的对象而已
就好比你用一个过程A构造了一台电脑a,但别人用另外的方式B制造了与a完全相同的电脑b,但是拿电脑b与制造电脑的过程A来对比,有可比性么?
迷糊。
function showPic(a, b, c, d) {
this.fatherClassName = a;
this.picClassName = b;
this.numClassName = c;
this.speed = d;
}showPic.prototype={
show: function() {
var fatherClassName =this.fatherClassName;
var picClassName = this.picClassName;
var numClassName =this.numClassName;
var speed = this.speed;
$("." + fatherClassName + " ." + numClassName + " li").click(function() {
$active = $(this);
clearInterval(play);
rotate();
return false;
});
$("." + picClassName + " a").hover(function() {
clearInterval(play);
}, function() {
rotateSwitch();
});
var rotate = function() {
picIndex = $active.text() - 1;
$active.siblings().removeClass('on');
$active.addClass('on');
$("." + fatherClassName + " ." + picClassName + " li").hide();
$("." + fatherClassName + " ." + picClassName + " li:eq(" + picIndex + ")").show();
};
var rotateSwitch = function() {
play = setInterval(function() {
$active = $("." + fatherClassName + " ." + numClassName + " li.on").next();
if ($active.length === 0) {
$active = $("." + fatherClassName + " ." + numClassName + " li:first");
}
rotate();
}, speed);
};
rotateSwitch();
},
}
楼上的-,-能详细指点下么? 或者
你的意思是不合适 var a{} 定义的 相当于function A() new的一个实例?
你不是说我的电脑相当于电脑类中的一个么?
用var 的不就是一台电脑么?
用function 的不就是一个电脑类吗?
是这意思么?
没有关系的东西,var a={} 不是function A()的实例,因为它不是A构造出来的你可以理解为A构造出的东西还能用其他方式做出相同的东西{}配置对象,是js里面直接写对象的方式
var a={} 相当于 var a=new Object();
var a={a:"a"} 相当于var a=new Object();a.a="a";
//...
//...
}
采用默认的prototype,然后再往里面添加东西。否则(new showPic).toString()这种最基本的操作都没有。如果觉得写得代码不够多,toString()这种自己写也无所谓。
像上面的
var a=new showPic (1,1,1,1)
中 a是 showPic的一个 实例么。
这个我懂。
但我想知道
我帖的2段 代码都实现了同一个功能,有什么区别?
第二段指定了一个prototype,里面只有一个property,就是show。
而第二段代码showPic是构造函数,可以构造多个不同的对象
具体差别你从面向对象的知识上去找,或者自己写写控件,看看你的第一种方式能写出控件来么?
我写一个对象
var obj={a:'a'};
function A={this.a="a";}
var a=new A();
obj与a有相同的成员,只是构造方式有差别,但能说obj是A的实例么?
这个明白。a才是A的实例。
obj是与a一样有相同属性的而已原理已经搞明白了。
但在后期的使用上面,有什么问题?