再和“面向对象”谈恋爱 - 对象简介(一)

JavaScript中的面向对象是个老生常谈的话题,但是依然有很多小伙伴处于懵逼的状态。面试时候最担心的就是被问到面向对象相关的内容,自己看过无数的资料,依然对面向对象百思不得其解。到底什么是原型?什么是构造函数?什么是继承。。。一提到这些概念那真是欲哭无泪、悲愤交加,甚至恨的直咬牙!所以有必要重新再谈一次面向对象。同时我也希望通过这几篇文章让你对面向对象由恨生爱,再到爱恨交加,最后爱得死去活来!

对象

?
??各位老铁们应该听过一个词叫“一切皆对象”,而“面向对象”中也带了一个“对象”,可见“对象”这个词非常重要。所以弄清楚 “对象”是什么尤为重要。

??对象在生活中指的是女朋友或者男朋友,而在JavaScript里说的通俗一点就是一个放了很多属性与方法的集合,有很多的属性与方法是一个对象最显著的特点(可以粗暴的认为,但凡有属性与方法的就是个对象)。JavaScript里除了运算符、语句、表达式(这些都是基本语法,任何一门语言都得有基本的语法)以外,其它的都是对象或者说是某个对象身上的一部分,所以说js里一切皆对象是有讲究的。换句话说,我们在写js的时候,其实都是用一些基本语法去操作对象
?
1、字符串

‘kaivon‘.length;         //6 属性
‘kaivon‘.substring(2);   //ivon  方法

?
2、数字

(12.25).toFixed(1);     //12.3 方法

?
3、布尔值

true.toString();        //true 方法

?
4、函数

const fn=function(){};
fn.name;    //fn    属性
fn.call(window);    //方法

数组与对象想必就更不用解释了
?
?

对象分类

?
在JavaScript中我把对象分为三类,全局对象、内置对象、自定义对象
?
?

1、全局对象

?

  • 它是JavaScript预定义的对象,作为JavaScript的全局函数和全局属性的占位符
    ?
  • 它是顶层对象,由宿主环境决定类型
    1、网页里为window
    this===window;  //true

    2、node里为Global

?

  • 它身上的属性或方法可以直接使用,不用指定所属对象
parseInt(‘12a‘);   //12
window.parseInt(‘12a);  //12
String(12); //12
window.String(12);  //12

?

  • 它有构造函数但无法实例化
window.constructor===Window; //true
window instanceof Window;   //true
new Window();   //报错

?
?

2、内置对象

?

  • ECMAScript自己定义的对象,每个对象都有一个自己对应的构造函数

    Object.prototype.constructor===Object;      //true
    Array.prototype.constructor===Array;        //true
    Function.prototype.constructor==Function;   //true

    ?

  • 每个内置对象都是全局对象的一个属性(内置对象都是全局对象的儿子)
    window.Object===Object;      //true
    window.Array===Array;        //true
    window.Function==Function;   //true
  • 内置对象分类
    Object、Number、String、Boolean、Array、Math、Date、JSON、RegExp、Function...
    所有内置对象请移步https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects
    ?
  • 内置对象之间也有继承关系,所有内置对象中Object是绝对的大哥,其它对象都会继承它原型里的属性与方法
Number.prototype.__proto__===Object.prototype;  //true
String.prototype.__proto__===Object.prototype;  //true
Boolean.prototype.__proto__===Object.prototype; //true
Array.prototype.__proto__===Object.prototype;   //true
Function.prototype.__proto__===Object.prototype;//true

?
可能有些小伙伴在这里会不理解,没关系。这里想让你知道的是内置对象反正能跟Object扯上关系,后面的文章会详细去说,我们要放长线掉大鱼。

?
?

3、自定义对象

面向对象的内容,后面文章详细说

这篇文章主要介绍对象的概念,下篇文章详细介绍面向对象里的相关概念

原文地址:http://blog.51cto.com/13258913/2133666

时间: 2024-11-06 18:47:24

再和“面向对象”谈恋爱 - 对象简介(一)的相关文章

再和“面向对象”谈恋爱 - 对象相关概念(二)

上一篇文章把对象的概念讲解了一下,这篇文章要重点解释最让大家犯迷糊的一些概念,包括 构造函数 实例 继承 构造函数的属性与方法(私有属性与方法) 实例的属性与方法(共享属性与方法) prototype(原型) __proto__(原型) 构造函数 构造函数依然是个函数,用来生成对象.所有的对象都是由构造函数创建的 对象哪来的?构造函数生的.而普通函数不能生成对象(不孕不育),构造函数可以生成对象(有生育能力).每个对象都会有一个自己对应的构造函数,但是不代表每个构造函数都会生(生成实例),有不会

再和“面向对象”谈恋爱 - 图片预加载组件(七)

再和"面向对象"谈恋爱 - 对象简介(一)再和"面向对象"谈恋爱 - 对象相关概念(二)再和"面向对象"谈恋爱 - 面向对象编程概念(三)再和"面向对象"谈恋爱 - class(四)再和"面向对象"谈恋爱 - 继承(五)再和"面向对象"谈恋爱 - super(六) 通过前面的六篇文章已经把ES6的面向对象跟大伙说清楚了,大家最关心的应该是来个例子实战一下,别担心自行车都会有.那这篇文章通

再和“面向对象”谈恋爱 - class(四)

在上一篇文章里我介绍了一下面向对象编程的概念,在最后终于喜出望外看到了ES6提供了类的概念了.那这个类如何去用,是这篇文章的主题.ES6给我们提供了一个class关键字.这个关键字跟以前的var let const很像,它们都是用做声明的,而class就是用来声明一个类的. 语法 class name [extends]{ //extends是用来继承的,可选参数 //class body }; 注意 class不能重复声明(与let.const一样) 类的本质还是一个构造函数 class Di

再和“面向对象”谈恋爱 - 继承(五)

通过上一篇文章想必各位老铁已经熟悉了class了,这篇文章接着介绍继承.面向对象里最大的特点应该就属继承了.一个项目可能需要不断的迭代.完善.升级.那每一次的更新你是要重新写呢,还是在原有的基础上改吧改吧呢?当然,不是缺心眼的人肯定都会在原来的基础上改吧改吧,那这个改吧改吧就需要用到继承了. 在第二篇文章里说过原型实例跟构造函数之间的继承,并且还讲了一道推算题.最终我们明白,实例为什么能继承原型上的内容是因为prototype,所以在ES5里面想要继承的话就得通过原型,需要对prototype进

再和“面向对象”谈恋爱 - super(六)

在上一篇文章里介绍了继承,那其中说过一个很关键的东西想要继承子类里里必需先调用一个super方法.而super的作用绝对是价值连城!同时super的作用还有多种,并且跟你的使用环境有关系. 1.当作函数使用 super被当作函数使用,这种情况是最普遍的,上一篇文章里已经使用过.它有以下几种作用: super作为函数调用时,代表父类的构造函数 调用super后,this会被改成子类 只能用在构造函数里,用在其它地方报错 { class Father{ constructor(){ console.

面对对象 谈恋爱五大原则浅析!

面向对象编程其实无时无刻不在向我们阐释婚恋观 面向对象编程5大原则,想来跟处对象是一样一样的: 单一职责原则(SRP): 做一个单纯的人,才会有简单<稳稳的幸福-陈奕迅>: 一个类应该仅有一个引起它变化的原因 开放封闭原则(OCP):悟以往之不谏,知来者犹可追: 既开放又封闭,对扩展是开放的,对更改是封闭的! 里氏替换原则(LSP):花心大萝卜才能永远立于不败之地: 子类可以替换父类并且出现在父类能够出现的任何地方,面向接口编程gof 依赖倒置原则(DIP): 谈恋爱经济也要独立呀: 传统的结

20150205-《我和抑郁谈恋爱》

<我和抑郁谈恋爱>内容简介:我将这些年面对抑郁的艰辛历程记录下来,除了希望鼓励别人, 也藉以鼓励将来的自己. 倘若将来再遇上Mr,Depression, 而“弹药”又短缺的话,我还有这<我 和抑郁谈恋爱>,告诉自己:我曾努力过,也成功过.Lucia 笑与泪分享!与抑郁长达8年的"爱情 长跑".突如其来的邂逅到爱恨缠绵,从漫长的治疗过程到起伏不定的心情,以生动有趣的图文告诉 你:Mr, depression 并不可怕,只要有勇气跟他讲分手.

价值观不同的人不适合谈恋爱

今天和男朋友狂吵架,整个人都不好了. 起因很简单,就是我俩一起睡了一会,错过了电影开场时间.在睡之前我提醒了他很多遍“设闹钟了么?没设闹钟我设一下.”他设置了闹钟可是他没起来,而且还关掉了闹钟,导致我俩一起错过了开场.这场电影,从上周二开始我就计划要看看.周三首映人太多没去,周四太忙没去,周五问他要不要去他觉得太晚没去,周六晚上想着可以去看电影了呀他觉得明天白天去更好又没去.今天周日终于可以看电影了,结果就这么错过了,特别生气,早知道这样的话我不如早点自己去看了电影何必等到现在. 延伸出来的话题

工作就像谈恋爱

企业和员工就像男人和女人,试用期就像在谈恋爱,转正了就是领了红本.无论那个阶段,双方都在有原则,又要对为对方着想,况且好人和好人不一定能够过一被子,也有因为爱而离婚,不然也不会有这么高的离婚率.一部分传统的人顾全大局,委屈求全,离婚是毒蛇.另一部分,则打破传统最求自己的幸福.二者都没错,看你站在那个角度了.老婆也好,老公也好,且行且珍惜,离多了好人也不一定好了.谁都不愿意,闹得家庭破碎,毕竟对大家都不爽.婚姻如此工作亦如此,公司及领导多站在员工的角度想想,员工也多为企业想想,建利要相互的信任,别