博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS的构造函数
阅读量:2238 次
发布时间:2019-05-09

本文共 1789 字,大约阅读时间需要 5 分钟。

//构造函数//使自己的对象多次复制,同时实例根据设置的访问等级可以访问其内部的属性和方法//当对象被实例化后,构造函数会立即执行它所包含的任何代码function myObject(msg){//特权属性(公有属性)this.myMsg = msg; //只在被实例化后的实例中可调用this.address = '上海';//私有属性var name = '豪情';var age = 29;var that = this;//私有方法function sayName(){alert(that.name);}//特权方法(公有方法)//能被外部公开访问//这个方法每次实例化都要重新构造而prototype是原型共享,所有实例化后,都共同引用同一个this.sayAge = function(){alert(name); //在公有方法中可以访问私有成员}//私有和特权成员在函数的内部,在构造函数创建的每个实例中都会包含同样的私有和特权成员的副本,//因而实例越多占用的内存越多}//公有方法//适用于通过new关键字实例化的该对象的每个实例//向prototype中添加成员将会把新方法添加到构造函数的底层中去myObject.prototype.sayHello = function(){alert('hello everyone!');}//静态属性//适用于对象的特殊实例,就是作为Function对象实例的构造函数本身myObject.name = 'china';//静态方法myObject.alertname = function(){alert(this.name);}//实例化var m1 = new myObject('111');//---- 测试属性 ----////console.log(myObject.name); //china//console.log(m1.name); //undefined, 静态属性不适用于一般实例//console.log(m1.constructor.name); //china, 想访问类的静态属性,先访问该实例的构造函数,然后在访问该类静态属性//console.log(myObject.address); //undefined, myObject中的this指的不是函数本身,而是调用address的对象,而且只能是对象//console.log(m1.address); //上海 此时this指的是实例化后的m1//---- 测试方法 ----////myObject.alertname(); //china,直接调用函数的类方法//m1.alertname(); //FF: m1.alertname is not a function, alertname 是myObject类的方法,和实例对象没有直接关系//m1.constructor.alertname(); //china, 调用该对象构造函数(类函数)的方法(函数)//m1.sayHello(); //hello everyone, myObject类的prototype原型下的方法将会被实例继承//myObject.sayHello(); //myObject.sayHello is not a function,sayHello是原型方法,不是类的方法//---- 测试prototype ----////console.log(m1.prototype); //undefined, 实例对象没有prototype//console.log(myObject.prototype); //Object //alert(myObject.prototype.constructor); //console.log返回myObject(msg),此时alert()更清楚,相当于myObject//console.log(myObject.prototype.constructor.name); //china, 相当于myObject.name;

 

 

 

参考:

 

近年来发现有人对上图做了解释,分享:

 
 

转载于:https://www.cnblogs.com/vicky-li/p/6899609.html

你可能感兴趣的文章
幂等性验证思想
查看>>
DB理论--数据存储方式
查看>>
PB协议的说明与使用
查看>>
什么是TPS,什么是QPS,区别是什么?
查看>>
git pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
查看>>
arraylist扩容时机java8
查看>>
logback中additivity的理解
查看>>
一篇文章搞懂hash,hashcode,equals,==的用法
查看>>
mysql数据库,悲观锁。for update 的用法。
查看>>
springboot+jta+atomikos多数据源和 springboot+mybatisplus+aop实现数据库读写分离而引发的一些思考
查看>>
java面试中常考的一些面试sql语句
查看>>
一个字节等于多少位?
查看>>
帧框架frameset的用法总结
查看>>
java1.8中创建hashmap的初始化大小设置标准
查看>>
mark一下,service的实现层没有加@service注解。
查看>>
jq对象转换成js对象。已经jq的复合选择器。
查看>>
(一)alin‘s mysql学习笔记----概述
查看>>
(二)alin’s mysql学习笔记----mysql的存储引擎
查看>>
(三)alin’s mysql学习笔记----常用的join连接查询
查看>>
(四)alin’s mysql学习笔记----索引简介
查看>>