我发现下面的代码的某个地方,但我没有正确理解的代码。
ArticleVote.submitVote('no');return false;
是ArticleVote
类和submitVote()
这个类的功能?
或者是什么上面的代码是什么意思? 而且是有类和对象jQuery的或传统的JavaScript的概念呢? 如何建立呢? 请分享一些参考链接或代码。
我发现下面的代码的某个地方,但我没有正确理解的代码。
ArticleVote.submitVote('no');return false;
是ArticleVote
类和submitVote()
这个类的功能?
或者是什么上面的代码是什么意思? 而且是有类和对象jQuery的或传统的JavaScript的概念呢? 如何建立呢? 请分享一些参考链接或代码。
相对于其他据称纯OOP语言。 函数是对象太多,但他们可能只是以及为对象的构造函数。
var ObjectCreator = function () {
};
上面是一个函数,它如果调用适当,创建一个对象。 适当地调用意味着你必须使用new
操作:
var obj = new ObjectCreator;
因此,虽然JavaScript没有类本身,有手段来模仿这种行为。 例如:
class Foo {
public void bar() {}
}
Foo foo = new Foo();
是等价于下面的JS代码:
var Foo = function () {
// constructor
};
Foo.prototype.bar = function () {}
var foo = new Foo;
真正的区别,当你想使用继承,这是一种不同类型的继承(原型)的。 所以,给定两个伪类Foo和Bar,如果我们想栏以从富延长,我们会写:
var Foo = function () {};
var Bar = function () {};
Bar.prototype = new Foo; // this is the inheritance phase
var bar = new Bar;
alert(bar instanceof Foo);
虽然构造函数是有用的,有些时候,我们只需要该对象的只有一个实例。 写一个构造函数,然后填充它的原型属性和方法是有点乏味。 所以,JavaScript有对象的文字,这是某种形式的哈希表的,只是他们的自我意识。 通过自我意识我的意思是,他们了解this
关键字。 对象文本来实现Singleton模式的一个很好的方式。
var john = {
age : 24,
isAdult : function () {
return this.age > 17;
}
};
以上,使用构造函数将是等效于以下语句:
var Person = function (age) {
this.age = age;
};
Person.prototype.isAdult = function () {
return this.age > 17;
};
var john = new Person(24);
prototype
啄 正如许多人所说,在JavaScript对象从对象继承。 这件事情有一些有用的方面,其中之一可以被调用, 寄生继承 (如果我没记错的道格拉斯克罗克福德提到这个上下文中)。 经典OO语言>子链-无论如何,这原型概念与原型链的概念,它类似于母关联。 因此,继承的东西。 如果一个bar
的方法被称为上foo
对象,但该对象没有一个bar
方法,成员查找阶段开始:
var Baz = function () {};
Baz.prototype.bar = function () {
alert(1);
};
var Foo = function () {};
Foo.prototype = new Baz;
var foo = new Foo;
/*
* Does foo.bar exist?
* - yes. Then execute it
* - no
* Does the prototype object of the constructor function have a bar
* property?
* - yes. Then execute it
* - no
* Is there a constructor function for the prototype object of
* the initial construct function? (in our case this is Baz)
* - yes. Then it must have a prototype. Lookup a bar
* member in that prototype object.
* - no. OK, we're giving up. Throw an error.
*/
foo.bar();
有经典的面向对象的继承和基于原型的继承之间的关键区别。 当对象从对象继承,他们也继承状态 。 就拿这个例子:
var Person = function (smart) {
this.smart = smart;
};
var Adult = function (age) {
this.age = age;
};
Adult.prototype = new Person(true);
var john = new Adult(24);
alert(john.smart);
我们可以说, john
是一位匿名人士的寄生虫,因为它无情吸人的智慧。 此外,由于上述定义,未来所有的大人会很聪明,这不幸的是,并非总是如此。 但是,这并不意味着继承对象是一件坏事。 只是一个工具,就像其他任何东西。 因为我们认为合适的,我们必须使用它。
在经典OO继承我们做不到以上。 我们可以使用静态字段,虽然效仿。 但是,这将使得具有该字段的值相同该类的所有实例。
JavaScript的支持对象 ,但不是类 -它使用了基于原型的对象系统。
JavaScript的支持面向对象的开发
面向对象的JavaScript
当然JS有对象和类,但它不完全是一个传统的做法。
这是一个相当广泛的问题,但有你想知道的关于JS对象和类三个主要方面:
1)。 一切都是一个对象 - 这个著名的包括JS的第一类函数
2)。 有对象文本
var myObject = { "foo": 123, "bar": [4,5,6] };
3)。 继承是基于原型,所以创建类的更多的是形式大于功能的问题。 为了让你写的东西像一类的效果:
function myClass(foo)
{
this.foo = foo;
}
myClass.prototype.myFooMethod = function() {alert(this.foo);}
var myInstance = new myClass(123);
myinstance.myFooMethod(); // alerts 123
为了您的例子很可能是ArticleVote是一个对象实例,可能没有概念类,并submitVote将是对象的方法。 不能肯定地告诉虽然,这可能是你所说的另一种语言的静态方法。
是的,JavaScript有面向对象编程,对象和功能令人印象深刻的支持。 事实上,我很惊讶,你要问这个问题! 这里有丰富的资源,在网上如:
http://mckoss.com/jscript/object.htm
http://www.webreference.com/js/column79/
http://www.javascriptkit.com/javatutors/oopjs.shtml
更多资源: http://www.google.com/search?q=object+oriented+programming+javascript
JavaScript框架,如jQuery和原型已经不能建成没有这种支持的JavaScript引擎。
您可以实现上述通过JavaScript,无关的jQuery。
var ArticleVote= {};
ArticleVote.submitVote = function(voteResult) {
console.log(voteResult);
}
function Vote(){
ArticleVote.submitVote('no');
return false;
}
您可以使用JavaScript函数类。
ClassUtil = function(param){
privateFunction = function(param){
// Do some thing
return valueParam;
}
this.publicFunction = function(){
var val1 = function1();
if (val1){
return true;
} else{
return false;
}
}
}
function getClass(){
var classUtil = new ClassUtil();
alert(classUtil.publicFunction());
}
有一个公钥和一个私钥功能。 您可以使用类的对象从出方调用公共职能。