深入理解面向对象的Javascript

深入理解面向对象的Javascript
Javascript是面向对象的,但是很多人并不完全理解它。

在Javascript中,对象分为两类,可以称为公共对象的是我们对对象的共同理解:这些数字、日期用户定义(如:{)等。

另一种称为方法对象的函数是我们通常定义的函数,您可能会感到奇怪:方法是方法,对象是什么但在Javascript中,该方法实际上被视为对象:
复制代码代码如下所示:
函数func(){ alert(你好!);}
警报(func.tostring());

在这种情况下,虽然功能被定义为一种方法,它本身包含了一个toString方法,说明功能被视为一个对象。更准确地说,功能是一个方法对象。下面是例子的延续:
复制代码代码如下所示:
func.name =我功能。;
警报(函数名);

我们可以任意设置函数的属性,这就证明了函数是一个对象,那么方法对象和普通对象的区别在哪里呢当然,第一个方法对象可以执行,后面有一对圆括号,这是方法对象的执行。
复制代码代码如下所示:
Func();

因此,方法对象具有两重性,一方面它可以被执行,另一方面它可以作为普通对象使用,这是什么意思这意味着该方法的对象可以完全独立于其他对象。我们可以比较一下java,java,方法必须在类定义并不能单独存在,有没有需要Javascript。

方法对象与其他方法无关,这意味着它可以任意引用和传递:
复制代码代码如下所示:
函数调用(f){
(f);
}
调用(函数);

一个方法对象,函数,被传递给另一个方法对象,调用,允许后者在适当的时候执行函数,这就是所谓的回调。此外,这个方法对象的特殊性使得这个键不容易掌握。

除了被执行,方法对象还有一个特殊的函数,它可以通过新关键字创建一个公共对象。

当每个方法对象被创建时,它会自动拥有一个名为原型的属性,这个属性没有什么特别的。它可以访问其他属性,也可以被赋值。但是当我们用新关键字创建一个对象时,原型工作:它的值(也是一个对象)中包含的所有属性都将被复制到新创建的对象:
复制代码代码如下所示:
函数的原型;
新函数();
警报(f.name);

在执行过程中,两个对话框弹出对话框,后者表明F复制func.prototype.the以前对话框名称属性显示功能是作为一种方法执行新的对象,你可能会问,你为什么要在这个时间的功能事实上,此时函数的执行是构造函数的函数:
复制代码代码如下所示:
函数(){
这个名字已经被改变了。
}
函数的原型;
新函数();
警报(f.name);

您将发现f的name属性不再是函数的原型,这是函数的对象方法所扮演的构造函数的函数。因此,在Javascript中,用新关键字创建对象是以下三个步骤

1。创建一个新的公共对象;
2。将方法对象的原型属性的所有属性复制到新的公共对象。
三.使用新的公共对象作为上下文来执行方法对象。
一个语句类似于新函数(),可以描述为从一个词中创建一个新对象。

所以我们可以利用这一点。例如,有两种方法:对象和B.从一个包含所有A.prototype的属性创建新的对象,然后将它分配给B.prototype,这样做产生新对象不具有相同的属性代码是这样的:
复制代码代码如下所示:
a.prototype.hello =函数(){ alert(你好!);}
b.prototype =新一();
新的B();

这就是所谓的Javascript继承,它的本质是一个属性的拷贝,它是用原型实现的,如果不使用原型,那么使用循环,效果是一样的,所谓多重继承,自然是处处复制的。

Javascript中面向对象的原理就是这样,我从一开始到结束都没有提到类的概念,因为Javascript没有这样的东西,难道没有面向对象的类吗当然。第一类,然后是对象,这是不合理的,因为类原来是从对象派生出来的,第一个对象又是类,这是合理的:
复制代码代码如下所示:
我发现了一件事。
o.eat =功能({ return)我吃。} / /我发现它会吃;
o.sleep =功能({ return)zzzzzz…} / /我发现它会睡觉;
o.talk =功能({ return)嗨!我发现它可以说话;
o.think =功能({ return)嗯} / /我发现它会想。

var =新的(函数);我决定给它取人的名字。
human.prototype = O; / /这件事是所有人的概念。

新的(人类);当我发现其他类似的东西时,
警报((h.talk)) / /我知道这是!
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部