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

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

hot3.png

//构造函数 //使自己的对象多次复制,同时实例根据设置的访问等级可以访问其内部的属性和方法 //当对象被实例化后,构造函数会立即执行它所包含的任何代码 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;

javascript_object_layout.jpg

转载于:https://my.oschina.net/xinyuanKong/blog/698581

你可能感兴趣的文章
nova分析(7)—— nova-scheduler
查看>>
Entity Framework 实体框架的形成之旅--Code First模式中使用 Fluent API 配置(6)
查看>>
OpenMediaVault 搭建git,ssh无法连接问题
查看>>
java多线程之:Java中的ReentrantLock和synchronized两种锁定机制的对比 (转载)
查看>>
mysql性能优化学习笔记-参数介绍及优化建议
查看>>
【Web动画】SVG 实现复杂线条动画
查看>>
使用Wireshark捕捉USB通信数据
查看>>
iOS - KVC 键值编码
查看>>
《树莓派渗透测试实战》——1.1 购买树莓派
查看>>
Apache Storm 官方文档 —— FAQ
查看>>
iOS 高性能异构滚动视图构建方案 —— LazyScrollView
查看>>
Java 重载、重写、构造函数详解
查看>>
【Best Practice】基于阿里云数加·StreamCompute快速构建网站日志实时分析大屏
查看>>
【云栖大会】探索商业升级之路
查看>>
HybridDB实例新购指南
查看>>
C语言及程序设计提高例程-35 使用指针操作二维数组
查看>>
华大基因BGI Online的云计算实践
查看>>
深入理解自定义Annotation,实现ButterKnif小原理
查看>>
排序高级之交换排序_冒泡排序
查看>>
Cocos2d-x3.2 Ease加速度
查看>>