构造函数模式扩展
来源:互联网 发布:linux 复制命令 编辑:程序博客网 时间:2024/05/22 15:05
构造函数模式扩展
1. 构造函数模式中new Fn()执行,如果Fn不需要传递参数的话,后面的小括号可以省略
function Fn() { this.x = 100; this.getX = function () { console.log(this.x) } } var f1 = new Fn;// 不传参数可以省略()
2. this:
在类中出现的this.xxx=xxx中的this都是当前类的实例,而某一个属性值(方法),方法中的this需要查看方法在执行的时候,前面是否有”.”才知道this是谁
function Fn() { var num =10; this.x = 100; this.getX = function () { console.log(this.x); }}var f1 = new Fn;console.log(f1.num)
3. 私有变量
类有普通函数的一面,当函数执行的时候,var num其实只是当前形成的私有作用域中的私有变量而已,它和我们的f1这个实例没有任何的关系;
只有this.xxx=xxx才相当于给f1这个实例增加私有的属性和方法,才和我们的f1有关系
f1.getX(); // 100 this --> f1var s = f1.getX;s(); // undefined this --> window
4. return
在构造函数模式中,浏览器会默认的把我们的实例返回(返回的是一个对象类型的值);如果我们手动写了return返回值
function Fn() { this.x = 100; this.getX = function () { console.log(this.x); } return {name:'aa'}}var f1 = new Fn;console.log(f1)
- 1) 返回的是一个基本类型的值,当前的实例是不变的,f1还是当前Fn类的实例
- 2) 返回的是一个引用数据类型的值,当前的实例会被自己返回的值给替换掉,例如
return {name:'aa'}
,那么我们的f1就不再是Fn的实例,而是对象{name:'aa'}
5.检测某一个实例是否属于这个类 使用instanceof
function Fn() { this.x = 100; this.getX = function () { console.log(this.x); }}var f1 = new Fn;console.log(f1 instanceof Fn) // trueconsole.log(f1 instanceof Object) // true
所有的实例都是对象数据类型的,而每一个对象数据类型都是Object这个内置类的一个实例,所以f1也是它的一个实例
6. in和hasOwnProperty
- in:检查某一个属性是否属于这个对象(attr in object)
- hasOwnProperty:用来检测某一个属性是否为这个对象的“私有属性”,这个方法只能检测私有的属性
function Fn() { this.x = 100; this.getX = function () { console.log(this.x); }}var f1 = new Fn;console.log('getX' in f1) // trueconsole.log(f1.hasOwnProperty('getX')) // true
检测某一个属性是否为该对象的”公有属性”
function hasPubPubProperty(obj, attr) { return (attr in obj) && !obj.hasOwnProperty(attr);}console.log(hasPubPubProperty(f1,'getX'))
阅读全文
0 0
- 构造函数模式扩展
- 构造函数模式
- 构造函数模式
- 构造函数模式
- 构造函数模式
- 寄生构造函数模式
- swift 扩展系统类的构造函数
- ES6-正则的扩展-RegExp构造函数
- JS构造函数设计模式
- JS设计模式之构造函数模式
- gcc对C语言的扩展:函数参数构造
- 寄生构造函数——扩展原生数组
- 深入探索C++对象模型之构造函数扩展
- swift 创建类方法(扩展)和便利构造函数
- [php扩展开发] -- 类构造函数传参
- JS工厂模式(工厂函数)、构造函数模式
- ES6-函数的扩展-严格模式
- 构造函数+原型模式构造js自定义对象
- JAVAEE第15天-static,final关键字,访问权限修饰符,内部类,静态代码块,包的声明和导入
- 学习广度优先搜索(Queue)
- 7.5提取联通区域的轮廓
- Bellman-ford最短路算法
- android中build.gradle文件简单说明
- 构造函数模式扩展
- 关于花生壳动态ip映射的一点唠叨
- 设计模式——小谈单例
- Socket到底是什么?
- 一个页面从输入URL到页面加载显示完成,这个过程都发生什java 基础知识-数组的7种算法(排序、求和、最值、遍历...)么?
- 继承
- 【poj 2299】 Ultra-QuickSort 【Waterloo local 2005.02.05】
- 20171013学习日记 CSS
- C Looooops(扩展欧几里得)