JavaScript中的面向对象是个老生常谈的话题,可是依然有不少小伙伴处于懵逼的状态。面试时候最担忧的就是被问到面向对象相关的内容,本身看过无数的资料,依然对面向对象百思不得其解。到底什么是原型?什么是构造函数?什么是继承。。。一提到这些概念那真是欲哭无泪、悲愤交加,甚至恨的直咬牙!因此有必要从新再谈一次面向对象。同时我也但愿经过这几篇文章让你对面向对象由恨生爱,再到爱恨交加,最后爱得死去活来!
各位老铁们应该听过一个词叫“一切皆对象”
,而“面向对象”
中也带了一个“对象”
,可见“对象”
这个词很是重要。因此弄清楚 “对象”
是什么尤其重要。javascript
对象在生活中指的是女友或者男友,而在JavaScript里说的通俗一点就是一个放了不少属性与方法的集合,有不少的属性与方法是一个对象最显著的特色(能够粗暴的认为,但凡是有属性与方法的就是个对象)。JavaScript里除了运算符、语句、表达式(这些都是基本语法,任何一门语言都得有基本的语法)之外,其它的都是对象或者说是某个对象身上的一部分,因此说js里一切皆对象是有讲究的。换句话说,咱们在写js的时候,其实都是用一些基本语法去操做对象java
一、字符串node
'kaivon'.length; //6 属性 'kaivon'.substring(2); //ivon 方法
二、数字面试
(12.25).toFixed(1); //12.3 方法
三、布尔值segmentfault
true.toString(); //true 方法
四、函数数组
const fn=function(){}; fn.name; //fn 属性 fn.call(window); //方法
数组与对象想必就更不用解释了函数
在JavaScript中我把对象分为三类,全局对象、内置对象、自定义对象this
它是顶层对象,由宿主环境决定类型
一、网页里为windowprototype
this===window; //true
二、node里为Globalcode
parseInt('12a'); //12 window.parseInt('12a); //12 String(12); //12 window.String(12); //12
window.constructor===Window; //true window instanceof Window; //true new Window(); //报错
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...
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扯上关系,后面的文章会详细去说,咱们要放长线掉大鱼。
面向对象的内容,后面文章详细说
这篇文章主要介绍对象的概念,下一篇文章详细介绍面向对象里的相关概念