JS 面向对象 创建对象 对象在内存分配 对象调用 其他函数 或 其他对象成员 构造函数 通过call或apply执行函数 获取构造器 new Function()方式创建一个函数出来

PHP里边,是从一个类里边获得一个具体对象。
Javascript里边,没有类的概念,可以直接创建一个对象(或通过函数)出来,对象可以有默认成员,后期也可以给对象丰富成员出来。
1.创建对象
① 字面量方式创建
var obj = {成员名称:值,名称:值,名称:值…};
② 构造函数创建对象
var obj = new 函数名称();
③ Object方式创建对象
var obj = new Object();
字面量方式创建对象 及对象访问成员和丰富成员:
在这里插入图片描述
构造函数方式创建对象:
在这里插入图片描述
Object方式创建对象:
在这里插入图片描述
2. 对象在内存分配
与对象有关系的内存空间:
①. 栈空间
存放的数据大小比较小,一般大小固定的信息适合存放在该空间,例如 整型、boolean、对象的名称(引用)。
var dog = new Animal(); //对象体
②. 堆空间
该空间存储的数据比较多,空间较大,一般数据长度不固定的信息在该空间存放,例如: string、Array、对象实体
var dog = new Animal();

③. 数据空间
该空间存放常量、类的静态属性
④. 代码空间
存放函数体代码、方法体代码

对象在内存的分配:
在这里插入图片描述
在这里插入图片描述
3.对象调用 其他函数 或 其他对象成员
对象调用其他函数:
在这里插入图片描述
对象调用其他对象方法:
在这里插入图片描述
4. 构造函数 与 普通函数
构造函数和普通函数的区别:
没有区别,就看使用,new就是构造函数,函数()就是普通函数调用。
5. 函数的各种执行方式
① 普通函数调用(包括匿名函数自调用)
② 构造函数执行 new 函数
③ 作为对象的成员方法执行
④ 通过call或apply执行
函数/方法.call(函数内部this指引,实参,实参,实参。。。)
函数/方法.apply(函数内部this指引,[实参,实参,实参。。。])
call和apply使得函数执行的时候可以控制变量污染的风险。
(对象调用其他函数/方法的时候,无需为对象创建新成员)
call使得函数执行:
在这里插入图片描述
call使得对象在不创建新成员情况下,可以调用其他函数:
在这里插入图片描述
给call方法传递被调用函数的实参:
在这里插入图片描述
call方式 实现 对象调用其他对象成员方法:
在这里插入图片描述
6. this都是谁
① 在 函数/方法 里边 this代表调用该函数/方法的当前对象。
② 在事件中,this代表元素节点对象.
inputnode.onclick = function(){
alert(this.value);
}
③ 代表window。
④ 可以任意代表其他对象
在call和apply使用的时候,可以任意设置被执行函数内部this的代表
7. 获取构造器
构造器:使用什么元素实例化的对象,元素就称为该对象的构造器
(php类/javascript函数)
var cat = new Animal();
Animal就称为cat对象的构造器。

对象.constructor; //获得构造器

通过new Function()方式创建一个函数出来:
在这里插入图片描述
8.return对实例化对象的影响
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37171379/article/details/88886865