javascript之面向对象学习笔记02

Object 原型中的常用方法

1、constructor

语法:构造函数.prototype.constructor,

作用:指向构造函数本身

function Person(){}

console.log( Person === Person.prototype.constructor );//true

  

2、hasOwnProperty

语法:对象.hasOwnProperty( 属性名字 )

作用:检测属性为对象原生提供还是继承所得

function Person () {}

Person.prototype.name = "landmine";

var p = new Person();

p.age = 18;

console.log(p.hasOwnProperty("name")); //false

console.log(p.hasOwnProperty("age")); //true

  

3、isPrototypeOf

语法:对象1.isPrototypeOf( 对象2 )

作用:判断对象1是否为对象2的原形对象

function Person () {}

var p = new Person();

console.log( Person.prototype.isPrototypeOf(p) );//true

  

4、propertyIsEnumerable

语法:对象.propertyIsEnumberable( 属性名字 )

作用:原生属性是否可以枚举, 原生属性是否可以被 for-in 遍历到,不可枚举或不存在该属性或者不是原生属性则返回false

function Person () {

this.age = 18

}

var p = new Person();

p.name = "landmine";

console.log(p.propertyIsEnumerable( "name" )); //true

console.log(p.propertyIsEnumerable( "age" ));//false

console.log(p.propertyIsEnumerable( "gender" ));//false

  

原型链

1、对象都有原型对象, 对象默认继承自原型对象

2、 函数被定义后, 默认就有原型属性, 原型属性也是对象

3、函数的原型属性默认继承自 Object.prototype

4、原型对象中 constructor 指向对应的构造函数

5、 所有的函数都是 Function 的实例

6、 函数也是对象,所有函数的属性默认继承自Function.Prototype

7、Function本身也是函数。即Function.__prototype === Function.Prototype

基本的概念

prototype 是函数的原型属性, 是该函数创建的对象的原型对象

__proto__ 是对象的原型对象, 是创建该对象的构造函数的 原型属性

原型链图

instanceof运算符

语法:对象  instanceof 构造函数

作用:判断构造函数是否在对象的原形链上

function Foo() {}

function Fn() {}

var f1 = new Fn();

console.log( f1 instanceof Fn )//true

console.log( f1 instanceof Object )//true

console.log( f1 instanceof Foo )//false

Fn.prototype = new Foo();//修改函数的原形链

var f2 = new Fn();

console.log( f1 instanceof Foo )//false

console.log( f2 instanceof Foo )//true

  

当Fn原形属性被更改至Foo后,Foo就在重新声明的f2的原型链上,而f1的原型链并没有更改,Foo并没有在f1的原型链上。

修改原型链也可以直接修改对象的__proto__属性,在上面代码的基础上添加如下代码后,Foo也存在f1的原型链上。

F1.__proto__ = new Foo();

console.log( f1 instanceof Foo ) // true

new Function创建函数

语法: var 函数名 = new Function( arg1, arg2, arg3, ..., argN, body );

作用:创建函数,参数列表中最后一个位函数的内容,其他为函数的参数。

var fnMax = new Function( ‘a‘, ‘b‘, ‘return a > b ? a : b;‘ );

var res = fnMax( 1, 2 );

console.log(res); // 2

  

时间: 2024-10-10 13:35:01

javascript之面向对象学习笔记02的相关文章

JavaScript高级程序设计学习笔记 02

纯属个人笔记,全为原创,仅供参考 第二章  在HTML中使用JavaScript <script>元素 向 HTML 页面插入 JavaScript 的主要方法,就是使用<script>元素. HTML 4.01 定义了下列6个属性: -------------------------------------------------------明天更新-----------------------------------------------------------

javascript 高级程序设计 学习笔记02章 script元素的认知

hello world: 这一章的主要内容是 学习对 script 元素的 主要功能 和 使用 script 元素 是我们用来 载入javascript 脚本代码的 主要方式,是浏览器厂商为了 统一脚本代码的嵌入 而 创造的元素.我来看看 script元素 有哪些功能和属性吧. html 规范 为script元素 定义了6大属性: 1. scr 属性(可选)  这个属性主要目的是 通过src 指定外部脚本文件的文件地址,从而把外部文件里的脚本代码嵌入到html页面当中来.如果用了src指定外部脚

JavaScript高级程序设计学习笔记--面向对象程序设计

工厂模式 虽然Object构造函数或对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码.为解决这个问题,人们开始使用 工厂模式的一种变体. function createPerson(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name); }; return o; } var

javascript面向对象学习笔记(二)——创建对象

javascript面向对象学习笔记(二)--创建对象 工厂模式 该模值抽象了创建具体对象de过程.用函数来封装噫特定接口创建对象的细节. function createPerson(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name); }; return o; } var person1=createPerson("Chiaki&

ArcGIS API for JavaScript 4.2学习笔记[0] AJS4.2概述、新特性、未来产品线计划与AJS笔记目录

放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2? 诸君,我喜欢嫩的--呸呸呸 诸君,我喜欢3D咋了?新事物会替代旧事物不是~ ArcGIS API for JavaScript 4.2概述 AJS 4.2,即ArcGIS API for JavaScript 4.2,是美国ESRI公司针对WebGIS市场推出的.利用JavaScript和Dojo开发的一款产品,它在2016年12月发布.而AJS 4.0 beta则在一年前就发布了. 关于AJS3和AJS4选择的问题,

面向对象学习笔记

abstract:抽象类或方法的关键字注意事项:一个类中至少有一个抽象方法不允许有大括号主要意义就是规范方法,要求必须按照抽象中的方法来写继承抽象类的类,必须重载完全抽象类的方法抽象类是不能被实例化的,因为本身没有意义 extends 继承的关键字 类中常用的关键字:final 被定义的类不能被继承,该类的方法不能被继承,相当于一个锁的功能self self::静态成员,相当于类名称::静态成员,和this是有区别的,$this访问类中的内容必须实例化,而self是直接可以访问类中的内容的,多用

【OpenGL 学习笔记02】宽点画线

我们要知道,有三种绘图操作是最基本的:清除窗口,绘制几何图形,绘制光栅化对象. 光栅化对象后面再解释. 1.清除窗口 比如我们可以同时清除颜色缓冲区和深度缓冲区 glClearColor (0.0, 0.0, 0.0, 0.0);//指定颜色缓冲区清除为黑色 glClearDepth(1.0);//指定深度缓冲区的清除值为1.0 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//指定要清除的缓冲区并清除 2.绘制几何图形 先要设置绘制颜色,

SWIFT学习笔记02

1.//下面的这些浮点字面量都等于十进制的12.1875: let decimalDouble = 12.1875 let exponentDouble = 1.21875e1 let hexadecimalDouble = 0xC.3p0//==12+3*(1/16) 2.//类型别名,用typealias关键字来定义类型别名 typealias AudioSample = UInt16 var maxAmplitudeFound = AudioSample.min 3.//元组 let ht

Blender学习笔记 | 02 | 操作

Shift 点击不同图层 同时显示多图层物件 z 切换 Solid / Wireframe 视图模式 点选物件后M 移动到图层选项 Ctrl + 鼠标左键拖动 自由全选物件 B 方形区域圈选物件 Tab Object / Edit Mode 切换 T 开 / 关 侧栏 Ctrl + Tab 编辑状态下切换编辑对象 E Extrude Region 推挤区域.以发现为轴线. X 删除物件菜单 Blender学习笔记 | 02 | 操作,布布扣,bubuko.com