javascript 之对象-13
对象
无序属性的集合,属性可以包含基本值、对象或者函数,简单理解为对象是若干属性的集合;
我们常说的面向对象(oop)编程其实是指的一种编码的思想,简单理解为用对象来封装数据,利用封装、继承、多态对代码进行复用、重构、以及解耦等;
函数也是对象
每个函数都是Function 的实例/对象,所以函数名是一个指向函数对象的指针,这个对象跟其他对象一样具有属性,方法;
1 //函数声明
2 function sayName(){
3
4 }
5 //函数表达式
6 var sayNmae=function(){
7
8 }
9 //Function 构造函数
10 var sayName=new Function()
Function 构造函数可以接收任意数量参数作为参数,但是最后一个参数始终是函数体,前面的参数则看成是函数的形参;
创建对象
1、字面量
//字面量
var p={name:'Joel',age:22}
2、构造函数
系统自带:new Object(), Array(), Number(),Boolean(), Date()
var p=new Object();
p.name='Joel';
p.age='22';
自定义:为了和普通函数区分,首字母大写,用来构造对象的我们称为构造函数
function Person(name){
this.name=name;
this.age=age;
}
var p=new Person('Joel',22);
New 操作符
MDN上是这样说的:
当代码 new Foo (...) 执行时:
- 一个新对象被创建,它继承自 Foo .prototype。
- 使用指定的参数调用构造函数 Foo,并将 this绑定到新创建的对象。 new Foo 等同于 new Foo (),只能用在 Foo 不传递任何参数的情况。
- 如果构造函数返回了一个“对象”,那么这个对象会取代整个 new出来的结果。如果构造函数没有返回对象,那么 new出来的结果为步骤1创建的对象。(一般情况下构造函数不返回任何值,不过用户如果想覆盖这个返回值,可以自己选择返回一个普通对象来覆盖。当然,返回数组也会覆盖,因为数组也是对象。)
用代码来表示:
1 var o = new Object(); //创建对象
2 o.[[prototype]] = Foo.prototype;//创建的对象内部指针[[prototype]] 指向Foo的原型对象
3 Foo.call(o); //用创建的对象来绑定this 指针
所以,当我们执行new Person('Joel',22)时,javascript会:
var o = new Object();
o.__proto__ = Person.prototype;
A.call(o);
将创建的o对象返回给p;即完成var p=new Person('Joel',22);
对象——若干属性的集合
java或者C#中的对象都是new一个class,而且里面有字段、属性、方法,规定的非常严格。但是javascript就比较随意了,数组是对象,函数是对象,对象还是对象。对象里面的一切都是属性,只有属性,没有方法。那么这样方法如何表示呢?方法也是一种属性。因为它的属性表示为键值对的形式。而且,javascript中的对象可以任意的扩展属性,没有class的约束。
1 var p={
2 name:'Joel',
3 age:22,
4 sayName:function(){
5 console.log(this.name);
6 },
7 run:function(){
8 //TODO
9 }
10 }
11 p.a=20;
12 console.log(p.a)
javascript 之对象-13的更多相关文章
- javascript 全局对象--w3school
JavaScript全局对象 1. decodeURI()解析某个编码的URI. 2.decodeURInComponent()解析一个编码的URI组件. 3.encodeURI()把字符串编码为U ...
- JavaScript Date对象介绍
原文:JavaScript Date对象介绍 Date 日期和时间对象 1. 介绍 Date对象,是操作日期和时间的对象.Date对象对日期和时间的操作只能通过方法. 2. 构造函数 2.1 new ...
- JavaScript判断对象的类型
JavaScript判断对象的类型 最近阅读了一些关于JavaScript判断对象类型的文章.总结下来,主要有constructor属性.typeof操作符.instanceof操作符和Object. ...
- 前端基础:JavaScript DOM对象
JavaScript DOM对象 通过HTML DOM,可以访问JavaScript HTML文档的所有元素. 一.HTML DOM(文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(D ...
- Javascript基于对象三大特征 -- 冒充对象
Javascript基于对象三大特征 基本概述 JavaScript基于对象的三大特征和C++,Java面向对象的三大特征一样,都是封装(encapsulation).继承(inheritance ) ...
- JavaScript实现对象的深度克隆及typeof和instanceof【简洁】【分享】
JavaScript实现对象的深度克隆 代码实现如下: <!DOCTYPE html> <html lang="en"> <head> < ...
- JavaScript:对象
ylbtech-JavaScript:对象 1. JavaScript Array 对象返回顶部 1. JavaScript Array 对象 Array 对象 Array 对象用于在变量中存储多个值 ...
- javascript 克隆对象/数组的方法 clone()
1 11 javascript 克隆对象/数组的方法 clone() 1 demo: code: 1 var Obj; 2 let clone = (Obj) => { 3 var buf; ...
- JavaScript Json对象和Json对象字符串的关系 jsonObj<->JsonString
JavaScript Json对象和Json对象字符串的关系 jsonObj<->JsonString 如下示例: 直接写的a1就是一个Json对象,a2 就是一个Json对象字符串; 通 ...
随机推荐
- WSL (Windows Subsystem for Linux) 的 VSLAM (Visual Simultaneous Localization and Mapping) 道路
WSL 的 VSLAM 道路 以 Windows Subsystem for Linux 闯入 Visual Simultaneous Localization and Mapping 世界的艰难道路 ...
- 牛年 dotnet云原生技术趋势
首先祝大家:新年快乐,牛年大吉,牛年发发发! 2020年的春节,新冠疫情使得全球业务停滞不前,那时候,没有人知道会发生什么,因此会议被取消,合同被搁置,项目被推迟,一切似乎都停止了.但是我们却见证了I ...
- Linux命令学习-01——find -type
Linux find 命令用来在指定目录下查找文件. 任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件.并且将查找到 ...
- Python源码剖析——02虚拟机
<Python源码剖析>笔记 第七章:编译结果 1.大概过程 运行一个Python程序会经历以下几个步骤: 由解释器对源文件(.py)进行编译,得到字节码(.pyc文件) 然后由虚拟机按照 ...
- P1337 [JSOI2004]平衡点(模拟退火)题解
题意: 如图:有n个重物,每个重物系在一条足够长的绳子上.每条绳子自上而下穿过桌面上的洞,然后系在一起.图中X处就是公共的绳结.假设绳子是完全弹性的(不会造成能量损失),桌子足够高(因而重物不会垂到地 ...
- Dart DevTools & Flutter
Dart DevTools & Flutter https://flutter.dev/docs/development/tools/devtools/overview https://dar ...
- full page screen capture in js
full page screen capture in js html2canvas https://html2canvas.hertzen.com/ https://github.com/nikla ...
- 如何导出android内部存储的文件(不用root)
这段时间公司项目,涉及到数据缓存,由于需要缓冲的数据太多.太大,通过网络请求,再缓存到本地sqlite数据库,太费时间,消耗流量.所以准备先在本地保存一个标准版sqlite数据库(包含数据),打包到a ...
- React & Dva & Actions & dispatch & effects
React & Dva & Actions & dispatch & effects dispatch https://dvajs.com/guide/introduc ...
- SSO & Single Sign On
SSO & Single Sign On 单点登录 https://en.wikipedia.org/wiki/Single_sign-on https://cloud.google.com/ ...