扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
基于对象就是说,Javascript中所有的东西都是对象。也包括内置对象。如:String、Number、Boolean等这种基本对象类型。
创新互联凭借在网站建设、网站推广领域领先的技术能力和多年的行业经验,为客户提供超值的营销型网站建设服务,我们始终认为:好的营销型网站就是好的业务员。我们已成功为企业单位、个人等客户提供了网站设计、成都网站建设服务,以良好的商业信誉,完善的服务及深厚的技术力量处于同行领先地位。
function Aobj(name, age){
this.name = name;
thia.age = age;
}
一般人会解理Aobj是一个函数,其实你可以把它当做对象的
var a = new Aobj("张三",12);
alert(a.name);//张三
alert(a.age);//12
完全是可以这样做的。
原型,prototype,应该指的是设计模式中的原型模式,我猜说JavaScript基于原型,意思是JavaScript语言在设计的时候充分贯彻了原型模式的思想
JavaScript 是属于网络的脚本语言,ECMA-262 是 JavaScript 标准的官方名称。
JavaScript 由 Brendan Eich 发明。它于 1995 年出现在 Netscape 中(该浏览器已停止更新),并于 1997 年被 ECMA(一个标准协会)采纳。
希望对你有帮助,望采纳!
有三个核心概念:
一切事物皆对象,(tips: javascript 中除了两个特殊值undefined 和 null.)
对象具有封装和继承特性
对象与对象之间使用消息通信,各自存在信息隐藏。
OK,基于这三点,我们再来看,
C++ 是半面向对象半面向过程语言,因为,虽然他实现了类的封装、继承和多态,但存在非对象性质的全局函数和变量。
Java、C# 倒是完全的面向对象语言,通过类的形式组织函数和变量,使之不能脱离对象存在。但这里函数本身是一个过程,只是依附在某个类上。
然而,面向对象仅仅是一个概念或者编程思想而已,它不应该依赖于某个语言存在。比如 Java 采用面向对象思想构造其语言,它实现了类、继承、派生、多态、接口等机制。但是这些机制,只是他实现面向对象编程的一种手段而已,而非必须。
换句话来说就是,一门语言是可以根据其自身特性选择合适的方式来实现面向对象,一个女生是可以根据自身特色来选择合适的着装来展现自己,至于穿什么样的衣服,it’s up to you!
由于大多数人,像我们都是首先学习或者使用的是类似 Java、C++ 等高级编译型语言,先入为主地接受了“类”这个面向对象实现方式,从而在学习脚本语言的时候,习惯性地用类式面向对象语言中的概念来判断该语言是否是面向对象语言,或者是否具备面向对象特性。实际上,JavaScript语言是通过一种叫做原型(prototype)的方式来实现面向对象编程的。它和其他的面向对象类编程语言一样,只是它的实现方式不同而已,或者说他们采用了不同的面向对象设计哲学。
你预先接受了穿裙子才显得好看,所以你用这个“穿裙子”去评判别人穿着,但你不能说穿牛仔裤的她就是不好看的,对吧?别人只是选择了牛仔裤来展现自己。。So, java 选择了“类继承”, javascript 就是选择的“原型继承”来展示自己。
让我们从大家熟悉的类继承入手,
类继承就是在函数对象内调用父类的构造函数,使得自身获得父类的属性和方法。
但是原型继承呢,继承不在对象本身,而是在对象的原型上。子类的构造函数中不拥有父类对象的方法和属性。
那么让我们看一个简单的例子来和“原型继承”初次见面一下。
var Person = function(name, city){
this.name = name;
this.city = city || "China";
}
var jean = new Person("Jean"); //new 一个新对象
console.log(jean.__proto__.constructor);//私有链接,指向构造函数Person的原型123456123456
这里,大家是不是觉得很熟悉,因为写法跟“类继承“很相似啊。其实javascript还是沿袭了类继承的形式,听起来有点不伦不类,但是也许就是因为这种妥协,让javascript更容易被大多数人所接受,成为了现在最流行的原型继承语言也说不定呢~~
用大白话说,在做个对比,在举个例子你就懂了!!
说到基于基于面向对象程序设计(后面就不用了就“基于对象”)
在这之前是“基于过程”
过程和对象的区别(主要):
过程没有办法重复使用。例如:1+2+3这就是一个过程(答案是6)
---!!!它没有办法重复使用 (当改为4+5+6你又要重新写代码)
说对象了它可以重复使用。列如:a+b+c命名为 A (a,b,c)对象
A是对象名, a,b,c分别是对象的参数, a+b+c是对象的主体(对象的过程)
----!!!!!他可以重复使用
A(1,2,3)这就是对象调用 结果是6;(你不需要写成1+2+3)
A(4,5,6)这就是对象调用 结果是15;(你不需要写成4+5+6)
当然这是个例子(对象的主体比较简单)
-------------所以对象就是有相同过程的集合-------------------
~~~~~~~~~~~为什么叫对象 因为这是从object翻译的(外国人那边)~~~
JavaScript是否面向对象,是一个有争议的话题!
JavaScript是“基于对象”的语言,这种说法基本上是正确的,但是,另一些人坚持JavaScript是“面向对象”的,而这个看法,应该说是更加准确的。不过需要注意,“基于对象”和“面向对象”是两个不同层次的概念。
面向对象的三大特点(封装,延展,多态)缺一不可。通常“基于对象”是使用对象,但是不一定支持利用现有的对象模板产生新的对象类型,继而产生新的对象,也就是说“基于对象”不要求拥有继承的特点。而“多态”表示为父类类型的子类对象实例,没有了继承的概念也就无从谈论“多态”,现在的很多流行技术都是基于对象的(例如DOM),它们使用一些封装好的对象,调用对象的方法,设置对象的属性,但是它们无法让程序员派生新对象类型,他们只能使用现有对象的方法和属性,所以当你判断一个新技术是否是面向对象的时候,通常可以使用后两个特性加以判断,“面向对象”和“基于对象”都实现了“封装”的概念,但“面向对象”实现了“继承”和“多态”,而“基于对象”可以不实现这些。
通常情况下,面向对象的语言一定是基于对象的,而反之则不成立。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流