对Js OOP编程 创建对象的一些全面理解


Posted in Javascript onJuly 26, 2016

面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。

对象的含义

对象可以是汽车,人,动物,文字,表单或者任何存在的事物等等。

对象有:

属性-------对象的某些特定的性质。

方法-------对象能做的事情。

事件-------能响应发生在对象上的事情。

我们可以通过创建一个人的对象来理解面向对象

人:

两只手,两只脚,一个头,还可以跑动。

手,脚,头,是人的属性,跑动是人的方法。

首先,我们来用最简单的方法创建一个对象

var person = {
      head: "one",
      hand: "two",
      foot: "two",
      run : function(){
        console.log("running");
      }
    }

这个方法一点都不实用,因为它是创建一个单独的对象,,而这个对象和任何常见的数据结构没有任何联系。

然后,我们用构造函数的方式创建一个对象

var Person = function(){//注意,首字母大写
      this.head = "one",
      this.hand = "two",
      this.foot = "two",
      this.run = function(){
        alert("running");
      }
    }
    var Joan = new Person();
    document.write(Joan.run())// "running"

这是用构造函数创建的对象,然后我们再加上一行代码看看

var Niki = new Person();
    alert(Joan==Niki) //false;

是的,现在创建了是两个不同的对象实例。

在JavaScript中的每个函数都有一个prototype的属性.如果某个函数被用作构造函数,则这个属性会被自动通过new调用创建对象的原型

console.log(Joan)

可以看到有一个__proto__:Person,其中__proto__是Joan的原型链.它是指向Person的原型.

JS在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做__proto__的内置属性,用于指向创建它的函数对象的原型对象prototype。

关于原型链的一些理解,在JavaScript高级程序设计 一书中写的非常详细。有兴趣的可以去看看,网上也有pdf的文档可以找到。不过建议还是买本书,支持原版嘛。

然后对prototype这个原型属性的任何更改能够应用于用new Person()构造的每一个实例对象,不管它是在更改之前还是更改后创建.为Person.prototype 添加新函数.具体如下:

var Person = function(){//注意,首字母大写
      this.head = "one",
      this.hand = "two",
      this.foot = "two"
    }
    Person.prototype.run = function(){
      alert("running");
    }
    var Joan = new Person();
    Joan.run()// "running"
    alert(Joan.__proto__===Person.prototype)//'true'

可以看到,在原型中创建方法是可以调用的,同时Joan的原型链是指向Person的原型的。

再看:

var Niki = new Person();//"runing"
     Person.prototype.run = function(){
       alert("running running")
     }
     Joan.run()//"running running"
     Niki.run()//"running running"

看,修改Person的原型方法,所有被new Person()创建的对象实例中的方法都被修改了,因为所有实例中共用的是同一个原型方法run。这就是原型的一种应用。

这就是关于创建对象的一些理解。

写了好久。也不知道有没有错误。 如果有错误,欢迎各位大大指点。

下次再写面向对象继承方面的东西。

以上就是小编为大家带来的对Js OOP编程 创建对象的一些全面理解全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
按给定几率进行随机抽取的js代码
Dec 28 Javascript
基于jQuery的星级评分插件
Aug 12 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
Jul 25 Javascript
Node.js事件循环(Event Loop)和线程池详解
Jan 28 Javascript
jQuery原生的动画效果
Jul 10 Javascript
jquery性能优化高级技巧
Aug 24 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 Javascript
jQuery zTree树插件简单使用教程
Jan 10 Javascript
jQuery实现简易的输入框字数计数功能示例
Jan 16 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
Jan 04 Javascript
JavaScript实现轮播图特效
Apr 10 Javascript
JavaScript继承的三种方法实例
May 12 Javascript
jQuery仿京东商城楼梯式导航定位菜单
Jul 25 #Javascript
又一枚精彩的弹幕效果jQuery实现
Jul 25 #Javascript
EasyUI加载完Html内容样式渲染完成后显示
Jul 25 #Javascript
前端微信支付js代码
Jul 25 #Javascript
javascript与jquery动态创建html元素示例
Jul 25 #Javascript
jquery siblings获取同辈元素用法实例分析
Jul 25 #Javascript
js动态添加的DIV中的onclick事件简单实例
Jul 25 #Javascript
You might like
星际中的相关伤害
2020/03/04 星际争霸
深入php self与$this的详解
2013/06/08 PHP
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
node.js超时timeout详解
2014/11/26 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
Python使用Scrapy爬取妹子图
2015/05/28 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
django的model操作汇整详解
2019/07/26 Python
python实现LRU热点缓存及原理
2019/10/29 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
出口公司经理求职简历中的自我评价
2013/10/13 职场文书
个人年终总结怎么写
2015/03/09 职场文书
教师评职称工作总结2015
2015/04/20 职场文书
公司年会开场白
2015/06/01 职场文书
师范生见习自我总结
2015/06/23 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书
小组口号霸气押韵
2015/12/24 职场文书
2016大学军训心得体会
2016/01/11 职场文书
推荐六本经典文学奖书籍:此生必读
2019/08/22 职场文书
Java 数组的使用
2022/05/11 Java/Android