难道jQuery的或JavaScript有类和对象的概念?(Does jQuery or JavaS

2019-07-29 12:47发布

我发现下面的代码的某个地方,但我没有正确理解的代码。

ArticleVote.submitVote('no');return false;

ArticleVote类和submitVote()这个类的功能?

或者是什么上面的代码是什么意思? 而且是有类和对象jQuery的或传统的JavaScript的概念呢? 如何建立呢? 请分享一些参考链接或代码。

Answer 1:

一切都在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继承我们做不到以上。 我们可以使用静态字段,虽然效仿。 但是,这将使得具有该字段的值相同该类的所有实例。



Answer 2:

JavaScript的支持对象 ,但不是 -它使用了基于原型的对象系统。



Answer 3:

JavaScript的支持面向对象的开发

面向对象的JavaScript



Answer 4:

当然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将是对象的方法。 不能肯定地告诉虽然,这可能是你所说的另一种语言的静态方法。



Answer 5:

是的,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引擎。



Answer 6:

您可以实现上述通过JavaScript,无关的jQuery。

var ArticleVote= {}; 

ArticleVote.submitVote = function(voteResult) {
    console.log(voteResult);
}


function Vote(){
   ArticleVote.submitVote('no');
   return false;
}


Answer 7:

您可以使用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());    
}

有一个公钥和一个私钥功能。 您可以使用类的对象从出方调用公共职能。



文章来源: Does jQuery or JavaScript have the concept of classes and objects?