js实例属性和原型属性
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试文档</title>
<script type="text/javascript">
// 实质上属性和方法是一样的,方法是属性为引用型的函数。
//一个对象有4种属性:
// 1,构造函数通过this关键字定义的属性
// 2,构造函数通过var关键字定义的属性
// 3,构造函数的原型对象添加的属性
// 4,对象动态添加的属性
//实例的公有属性:1 通过this关键字定义的属性 可访问 1,2,3,4
//实例的私有属性:2 通过var关键字定义的属性。 可访问 2
//实例的共享属性:3 通过实例指向的原型添加的属性。 可访问 1,3,4
//实例的静态属性:4 对象动态添加的属性。 可访问 1,3,4
//总结:
// 实例属性:1,公有
// 2,私有
// 4,静态
// 原型属性:3,共享
//this定义的为特权属性。全部可访问
//var定义的为私有属性。
//动态添加的属性为公有属性。不可访问私有属性
//实例对象指向的原型属性为原型属性。不可访问私有属性,优先级低于公有属性
//实例属性主要有公有属性和特权属性构成。均可被外部和原型属性访问。主要区别在于是否可访问私有属性
//原型属性优先级低于实例属性。可被外部访问和实例属性访问(除私有属性)
//-----------------此处为分割线-----------------------------
// 公有属性:对象暴露给外部环境的属性。也是对象的属性。
// 私有属性:对象内部的属性,往往不可访问.在构造函数层面上考虑才有意义。
// 静态属性:动态添加的属性。也是对象的属性。
// 共有属性:所有构造函数生成的实例所共享的属性。
function User(){
// 公有属性:每new一个User实例对象,都有的属性。
// 为实例属性,所有实例的属性不共享内存。
// 外部可访问。
this.name='byronvis';
// 特权方法:每new一个User实例对象,都有的方法。
// 为实例方法,所有实例的方法不共享内存。
// 外部可访问。
// 可访问公有属性。
// 可访问私有属性。
this.sayName=function(){
alert(this.name);
alert(this.school);
alert(age);//变量声明会自动提前。
alert(this.sex);
};
// 私有属性:外部不可访问。
// 仅对构造函数有意义,对于new的User实例对象无意义。
var age=22;
// 私有方法:外部不可访问。
// 仅对构造函数有意义,对于new的User实例对象无意义。
function sayAge(){
alert(age);
}
sayAge();
}
// 共有属性: 共享内存。
User.prototype.school='zky';
// 共有方法:可访问公有属性。
// 共享内存。
User.prototype.saySchool=function(){
alert(this.school);
alert(this.name);
alert(this.sex);
alert(age);
};
var obj=new User();
// 静态属性:就是动态添加的实例属性。
obj.sex='man';
// 静态方法:就是动态添加的实例方法。
obj.saySex=function(){
alert(this.sex);
alert(this.name);
alert(this.school);
alert(age);
};
//-----------------此处为分割线-----------------------------
//// 证明this关键字定义的属性和动态添加的属性本质上一样的,都可认为是实例对象的公有属性。
// 验证: this关键字定义的属性访问动态添加的属性
// obj.sayName();//true
// 验证:动态添加的属性访问this关键字定义的属性
// obj.saySex();//true
// 验证:公有属性访问私有属性
// obj.sayName();//true
obj.saySex();//false
// 验证:共享属性访问私有属性
// obj.saySchool();//false
</script>
</head>
<body>
测试文档
</body>
</html>
js实例属性和原型属性的更多相关文章
- JavaScript面向对象(二)——成员属性、静态属性、原型属性与JS原型链
前 言 JRedu 上一篇博客中,我们介绍了JS中的面向对象,并详细的解释了this的指向问题.本篇博客,我们继续来学习JS的面向对象.来深入理解一下JavaScript OOP中的成员属性/方 ...
- 对JavaScript中的静态属性和原型属性的理解
首先是在访问上的区别,当访问实例对象的某个属性但它本身没有时,它就会到原型中去查找,但不会去查找静态属性. // 实例对象不会去查找静态属性 function Foo(){} Foo.a = 1; v ...
- js继承中,原型属性的继承探究
最近研究了js的继承,看了幻天芒的文章http://www.cnblogs.com/humin/p/4556820.html#3947420,明白了最好是使用apply或call方法来实现继承. 已知 ...
- js变量定义提升、this指针指向、运算符优先级、原型、继承、全局变量污染、对象属性及原型属性优先级
原文出自:http://www.cnblogs.com/xxcanghai/p/5189353.html作者:小小沧海 题目如下: function Foo() { getName = functio ...
- 【JavaScript】变量定义提升、this指针指向、运算符优先级、原型、继承、全局变量污染、对象属性及原型属性优先级
参考资料http://caibaojian.com/toutiao/5446 1.所有变量声明(var)或者声明函数都会被提升到当前函数顶部 关于函数表达式,js会将代码拆分为两行代码分别执行.这里需 ...
- JavaScript之面向对象学习二(原型属性对象与in操作符)获取对象中所有属性的方法
1.原型属性对象于in操作符之in单独使用 有两种方式使用in操作符:单独使用和在for-in循环中使用.在单独使用中,代码如下: function Person(){ } Person.protot ...
- JS的Object类的属性、方法及如何创建对象
属性 constructor:对创建对象的函数的引用(指针).对于Object类,该指针指向原始的object()函数. prototype:对该对象的对象原型的引用.对于所有的类,它默认返回Obje ...
- 面试题常考&必考之--js中的难点!!!原型链,原型(__proto__),原型对象(prototype)结合例子更易懂
1>首先,我们先将函数对象认识清楚: 补充snow的另一种写法: var snow =function(){}; 2>其次:就是原型对象 每当我们定义一个函数对象的时候,这个对象中就会包含 ...
- 08 (h5*) js第9天--原型、继承
目录: 1:原型和原型链 2:构造函数的原型可以改变 3:原型的最终指向 4:先修改原型指向,在添加方法. 5:实例对象中的属性和原型属性重合, 6:一个神奇的原型链 7:继承 8:原型链 9:利用c ...
随机推荐
- 利用阿里云如何开发一款直播app?
在开发的过程中应该注意些什么?下面让小编告诉你: 随着互联网的发展,越来越多的人已经加入互联网的行列.而且很多的人也开始直播,和众多的网友分享自己身边事情.互联网还在加速发展,从PC互联网,到移动互联 ...
- 程序包org.junit不存在和编码GBK的不可映射字符问题解决
maven项目在打包编译时提示: 解决办法: 将pom中junit依赖中的scope给注释掉 <dependency> <groupId>junit</groupId&g ...
- 两种屏幕HUD区域限制的做法(矩形,弧形)
HUD区域限制算是比较常用到的功能,方形的HUD区域限制多见于小地图,弧形或者椭圆多见于屏幕范围约束. 我没有研究倒角矩形做法,而是将椭圆和矩形进行插值得到一个弧度比较高的形状: 当插值为0时限制范围 ...
- iOS 画平滑曲线的方法及取音频数据的方法
源码:http://files.cnblogs.com/ios8/iOS%E5%BF%83%E7%94%B5%E5%9B%BEDemo.zip 取音频数据和画波形图的方法 ViewController ...
- [na]完全理解icmp协议
1.ICMP出现的原因 在IP通信中,经常有数据包到达不了对方的情况.原因是,在通信途中的某处的一个路由器由于不能处理所有的数据包,就将数据包一个一个丢弃了.或者,虽然到达了对方,但是由于搞错了端口号 ...
- MyEclipse中设置jsp页面为默认utf-8编码
转自:http://www.cnblogs.com/xdp-gacl/p/3496161.html 在MyEclispe中创建Jsp页面,Jsp页面的默认编码是“ISO-8859-1”,如下图所示: ...
- html5+css3 权威指南阅读笔记(三)---表单及其它新增和改良元素
一.新增元素及属性 1.表单内元素的form属性. html5: <form id="testForm"> <input type=text> </f ...
- 每日英语:Boost Your Balance; Avoid Falls
If you find yourself needing to sit down to take off your shoes, it might be time to start paying at ...
- python unicode to str and str to unicode
@staticmethod def unicode2str(p_unicode): v = p_unicode.encode('unicode-escape').decode('string_esca ...
- Spring Batch事务处理
事务模型描述 1.step之间事务独立 2.step划分成多个chunk执行,chunk事务彼此独立,互不影响:chunk开始开启一个事务,正常结束提交.chunk表示给定数量的item的操作集合,主 ...