js13--对象、原型
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type=text/javascript charset=utf-8>
var obj = new Object(); // 一样的var obj = {}; var a = new F();
obj.name = 'z3';
obj.sex = '男';
obj.sayName = function(){alert('我是张三!')};
// 类的概念 // 第一种形式 工厂模型
function createPerson(name , sex , age){
var obj = new Object();
obj.name = name ;
obj.sex = sex ;
obj.age = age ;
obj.sayName = function(){
alert(this.name);
}
return obj;
}
var p1 = createPerson('z3' , '男' , 20);
var p2 = createPerson('z4' , '女' , 25);
alert(p1.sex);
p1.sayName(); // 第二中形式 构造函数式 new Array new Date
// 函数的第一个字母大写 (类的模版)
function Person(name , age , sex){
this.name = name ;
this.age = age ;
this.sex = sex ;
this.sayName = function(){
alert(this.name);
}
} //构造一个对象 new关键字 传递参数 执行模版代码 返回对象 var p1 = new Person('小1' , 20 , '男');
var p2 = new Person('小2' , 21 , '女');
alert(p1.name);
p1.sayName();
alert(p1 == p2); //false, alert(p1.constructor == Person);
alert(p2.constructor == Person); alert(p1 instanceof Person); //true
alert(p1 instanceof Object); //true //创建对象的方式:
// 1当作构造函数去使用 :
var p1 = new Person('小1' , 20 , '男');
// 2作为普通的函数去调用
Person('小2' , 25 , '男');//在全局环境里定义属性并复制 直接定义在window上,this是window,
alert(name);
// 3在另一个对象的作用域中调用
var o = new Object();
// call applly
Person.call(o,'小4' , 12 , '女'); //o动态加一个方法,一次性的,复制方法的属性
alert(o.name);
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type=text/javascript charset=utf-8>
//同级函数可以互相访问
function Person(name , age){
this.name = 1 ;
sayName() ; //同级函数可以互相访问
alert(333);
} function sayName(){
alert(222);
Person();//同级函数可以互相访问
} // 原型 prototype
function Person(name , age){
this.name = name ;
this.age = age ;
this.sayName = function(){alert('我是姓名!')};//后面的函数看成匿名对象,每次不一样。函数可以公用,放在原型里面。
this.sayName = sayName1 ; //右边的函数是外部的函数
}
// 定义了一次函数
function sayName1(){
alert(this.name);
}
var p1 = new Person('z3',20);
var p2 = new Person('z4',21);
p1.sayName();
p2.sayName();
alert(p1.sayName == p2.sayName); // false
alert(p1.name == p2.name); // false // prototype 创建每一个函数都有一个prototype属性,这个属性其实是一个指针,而这个指针总指向一个对象
// 这个对象的用途就是将特定的属性和方法包含在内,起到一个所有实例所共享的作用
//闭包实现了函数层面多个子函数共享父类函数的属性、方法。类层面上原型实现了多个子类对象共享父类对象的属性、方法。
function Person(){}
var obj = Person.prototype;//原型的构造器是函数本身
alert(typeof obj);//object
obj.name = 'z3';
obj.age = 20 ;
obj.sayName = function(){alert(this.name);};//原型对象里面的this是对象自己
var p1 = new Person();
var p2 = new Person();
alert(p1.age);
alert(p2.age);
p1.sayName();
p2.sayName();
alert(p1.sayName == p2.sayName)//true,同一个地址 //函数.prototype = 原型对象,原型对象.constructor = 函数
alert(obj.constructor);//Person
//实例对象.prototype = 原型对象
alert(p1.prototype);
alert(obj.isPrototypeOf(p1));//是不是这个对象的原型
//Object.getPrototypeOf():根据实例对象获得原型对象
//object.hasOwnProperty(attribute) 判断属性是否属于对象本身
//in 操作符 判断对象中是否存在该属性(无论是实例对象还是原型对象)
//Object.keys();拿到当前对象里的所有keys 返回一个数组
//getOwnPropertyNames 枚举对象所有的属性 :不管该内部属性能否被枚举 </script>
</head>
<body>
</body>
</html>
js13--对象、原型的更多相关文章
- javascript 创建对象及对象原型链属性介绍
我们知道javascript里定义一个普通对象的方法,如: let obj = {}; obj.num = 1; obj.string = 'string'; obj.func = function( ...
- JavaScript对象原型写法区别
体现对象原型分步式写法 //原型分步式写法 //构造函数 function Person(){} //对象原型 Person.prototype.name = 'Avensatr'; Pers ...
- Javascript高级编程学习笔记(21)—— 对象原型
JS中对象相关的最重要的恐怕就是原型链了 原型链也是JS中对象继承的实现的基础 接昨天的文章,我们使用构造函数创建对象的时候仍然存在一些问题 那就是所有的实例没法共用一个函数 这样无疑会造成极大的内存 ...
- JavaScript对象原型写法详解
体现对象原型分步式写法 //原型分步式写法 //构造函数 function Person(){} //对象原型 Person.prototype.name = 'Avensatr'; Pers ...
- 关于js的对象原型继承(一)
javascript中,对象的继承是通过原型去继承. 可以这样理解:js中的对象,包含的除了属性和方法,还有一个最基本的原型__proto__对象.这个原型__proto__指向谁,这个对象就继承谁. ...
- jquery实现点击展开列表同时隐藏其他列表 js 对象操作 对象原型操作 把一个对象A赋值给另一个对象B 并且对象B 修改 不会影响 A对象
这篇文章主要介绍了jquery实现点击展开列表同时隐藏其他列表的方法,涉及jquery鼠标事件及节点的遍历与属性操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了jquery实现点击 ...
- JS的对象原型
1.对象 1.1 语法 对象可以通过两种形式定义:声明(文字)形式和构造形式. 对象的文字语法: var myObj = { key : value //... }; 对象的构造语法: var myO ...
- this、对象原型
this和对象原型 第一章 关于this 1.1 为什么要用this this 提供了一种更优雅的方式来隐式"传递"一个对象引用,因此可以将 API 设计 得更加简洁并且易于复用. ...
- react-native-pg-utils(对react-native全局进行配置,对内置对象原型链增加方法,增加常用全局方法.)
react-native-pg-utils 对react-native全局进行配置,对内置对象原型链增加方法,增加常用全局方法. 每次新建react-native项目之后都会发现有一些很常用的方法在这 ...
- JavaScript对象原型
一.MDN上的解释(有点抽象) 基于原型的语言? JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模 ...
随机推荐
- 【Codeforces Round #239 (Div. 1) A】Triangle
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 最后的直角三角形可以通过平移,将直角顶点移动到坐标原点. 然后我们只要枚举另外两个点其中一个点的坐标就好了. x坐标的范围是[1.. ...
- 【转】 HTML解析:基于XPath的C#类库HtmlAgiliytyPack
[转] HTML解析:基于XPath的C#类库HtmlAgiliytyPack 最近处于毕业设计开始阶段,前期工作需要去国外的一些专业数据库网站比对一些所需TF家族信息,为了快捷方便,想到用程序去帮助 ...
- centos7 安装rsyslog
http://blog.csdn.net/u011630575/article/details/50896781 http://blog.chinaunix.net/uid-21142030-id-5 ...
- 洛谷—— P1196 银河英雄传说
https://www.luogu.org/problem/show?pid=1196 题目描述 公元五八○一年,地球居民迁至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始 ...
- impala jdbc4的group by语句的bug,加上limit没错
这里用的ImpalaJDBC4.jar SELECT field1 alias1 FROM table1 where field1 ='xxxx' group by alias1 这句话impala会 ...
- 介绍静态链接库和动态链接库的差别,及在VC++6.0中的建立和使用
首先介绍一下链接库:链接库分为动态链接库和静态链接库两种 LIB是静态链接库,在程序编译连接的时候是静态链接,其相应的文件格式是.lib. 即当程序採用静态链接库的时候..lib文件里的函数被链接到终 ...
- 用户向导左右滑动页面实现之ImageSwitcher
当第一次打开一个app时,通常有一个使用向导介绍本APK的基本功能和用法,这个向导是很重要的,方便用户能高速知道和适应该app如何用. 实现此使用向导有非常多种方法,比方用ImageSwitcher, ...
- java音乐播放之IO流处理
这个类仅仅能一直播放.知道音乐结束. 比AudioCilp要好一点. import java.io.*; import javax.sound.sampled.*; public class Test ...
- 根据on,获取选中的元素
打钩的元素有个on的class. // 礼物发送 function send_gift() { var type,diamond,name,id; var list = $('.live .on'); ...
- double和decimal的ToString("#.##")方法使用的是四舍五入;
顺带提一下: 1. double和decimal的ToString("#.##")方法使用的是四舍五入: 2. 静态类System.Math下的Round(decimal d, i ...