js继承 原型
来源:互联网 发布:origin8怎么导入数据 编辑:程序博客网 时间:2024/06/03 15:02
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{margin:0;padding:0;}
.head{font-size:12px;padding:6px 0 0 10px;}
#login_box{width:300px;height:150px;background:#eee;
border:1px solid #ccc;position:absolute;left:50%;top:50%;margin-left:-150px;margin-top:-75px;display:none;}
#login_box p{height:20px;border-bottom:1px solid #ccc;font-size:12px;padding:6px 0 0 5px;font-weight:bold;}
#close{width:14px;height:14px;background:url(close.png) no-repeat;position:absolute;right:4px;top:6px;cursor: pointer;background-color: red;}
</style>
<!--<script>
window.onload=function(){
var login_btn=document.getElementById('login'),
login_box=document.getElementById('login_box'),
close=document.getElementById('close');
}
function addEvent(ele,type,hander){
}
function showLogin(){
if(ele.addEventListener){
ele.addEventListener(ele,type,hander)
}
else if(ele.attachEvent){
ele.attachEvent('on'+type,hander)
}
else{
ele['on'+type]=hander;
}
}
</script>-->
</head>
<body>
<div class="head">亲,您好!<input type="button" value="登 录" id="login"></div>
<div id="login_box">
<p>用户登录</p ><span id="close">关闭</span>
</div>
<script>
var person = {
age:26,
name:'wang',
say:function (num) {
console.log ("my name is "+this.age+",my name is "+this.name+'.');
//console.log ("my name is "+person.age+",my name is "+person.name+'.');
console.log("传进一个参数:"+num);
}
}
/*
* 上面那个对象 有三个属性 age name say
* 有一个属性是方法 如 say
* 如果我们想读他的age属性 直接console.log(person.age);
* 如果我们要添加一个新的属性 如job person.job = "coder";
* if we want to change the property(age),just as : person.age = 29;
* 对于第三个Say 里面用到了this 这个关键字,以后会单讲,在这里你可以理解成 this 就是person 这个对象 但是不建议直接用person
*
* 问题来了:设置person一个新属性 其为一个方法,这个方法存一个数字的参数,这个参数为你想设定的年龄。将person的年龄修改掉,
* 修改后再 调用 person的say 方法。
* */
//person.say(5);
/*
* 以上知识点
* 对象 对象属性的修改 对象方法的调用 对象中的this 函数参数
* */
function Person(option) {
this.age = option.age;
this.name = option.name;
this.say = function () {
console.log ("my name is "+this.age+",my name is "+this.name+'.');
//console.log ("my name is "+person.age+",my name is "+person.name+'.');
}
}
var person = new Person({age:18,name:'wang'});
person.say();
//为什么我们不如下写?
function Person1(age,name) {
this.age = age;
this.name = name;
this.say = function () {
console.log ("my name is "+this.age+",my name is "+this.name+'.');
//console.log ("my name is "+person.age+",my name is "+person.name+'.');
}
}
/*
* 你可以想如果有非常多的参数名称,而我们又忘了参数的顺序
* */
var person2 = new Person1('wang',18);
person2.say();//这会输出什么?你会发现 name 与 age 赋值给反掉了;而用对象则不存在这个问题
//但是如果用对象,我们想给他加一个默认值该怎么做呢?
function Person3(option) {
option = option || {};
this.age = option.age || 99;
this.name = option.name || 'congjun';
this.say = function () {
console.log ("my name is "+this.age+",my name is "+this.name+'.');
//console.log ("my name is "+person.age+",my name is "+person.name+'.');
}
}
var person3 = new Person3();
person3.say();//你自己测试一下会输出什么?
/*
* 注意 || 这是一种 一元判断 拿 option = option || {};
* 来说 对于等号右边 如果option存在,就把option 赋值给等号左边的option 如果不存在 则把{}赋值给等号左边的option
* */
/*
* 上面的函数叫构造函数
* 函数名首字母要大写;使用的时候 前面要加一个new关键字
* 构造函数内的this 指向构造函数本身
* 普通 函数呢?指向window
*
* 我们可以这个样子定义一个对象 var a = new Object(); 也可以 var a = {};
* 我们可以这个样子定义一个数组 var a = new Array(); 也可以 var a = [];
* 我们可以这个样子定义一个日期 var a = new Date(); 等等
*
* 虽然我们编程中 都采用后者,因为比较简单
* 但是你要知道,他们其实都是由构造函数而来
*
* var a = new Object();拿这句来说,a 与 new Object()之间有什么关系呢?
* a 是 new Object()实例化
*
* 注意如下的表述
*
* a 会有一个__proto__属性 而构造函数会有一个 prototype属性
* a 的__proto__ 会继承 其构造函数的 prototype属性
* 以上是最简单的对象继承。
* 但事情远没有结束
*
* 因为a 的构造函数 有可能会是 某个构造构造函数的 实例
* 而某个构造函数 还可能是其它构造函数的实例
* 这个样子一层层的存在一个继承关系
* 最顶端是什么呢?
* 那就是Object对象,到Object 就结束了
* 层层的继承像链一样,我们叫原形链
* 必须完全搞懂原型继承及原型链的定义。
*
* */
//第三天的题目 用构造函数的方法把第二天的题目做出来z
//主要是this 原型 与 原型链h
/*
* 再补充一点
*
* */
function Student() {
this.age = 55;
this.teacher = 'JS';
this.major = 'math';
}
Student.prototype.coderName = "congjun";
var student = new Student();
console.log(student.coderName);//这个coderName属性就是继承而来的
//下面的代码,要理解,对于for in循环不用特别关注,但是功能还有有一些重要
for(var i in student){
console.log("所有属性包含继承:"+i);
if(student.hasOwnProperty(i)){
console.log("本身自有属性:"+i);
}
}
</script>
</body>
</html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{margin:0;padding:0;}
.head{font-size:12px;padding:6px 0 0 10px;}
#login_box{width:300px;height:150px;background:#eee;
border:1px solid #ccc;position:absolute;left:50%;top:50%;margin-left:-150px;margin-top:-75px;display:none;}
#login_box p{height:20px;border-bottom:1px solid #ccc;font-size:12px;padding:6px 0 0 5px;font-weight:bold;}
#close{width:14px;height:14px;background:url(close.png) no-repeat;position:absolute;right:4px;top:6px;cursor: pointer;background-color: red;}
</style>
<!--<script>
window.onload=function(){
var login_btn=document.getElementById('login'),
login_box=document.getElementById('login_box'),
close=document.getElementById('close');
}
function addEvent(ele,type,hander){
}
function showLogin(){
if(ele.addEventListener){
ele.addEventListener(ele,type,hander)
}
else if(ele.attachEvent){
ele.attachEvent('on'+type,hander)
}
else{
ele['on'+type]=hander;
}
}
</script>-->
</head>
<body>
<div class="head">亲,您好!<input type="button" value="登 录" id="login"></div>
<div id="login_box">
<p>用户登录</p ><span id="close">关闭</span>
</div>
<script>
var person = {
age:26,
name:'wang',
say:function (num) {
console.log ("my name is "+this.age+",my name is "+this.name+'.');
//console.log ("my name is "+person.age+",my name is "+person.name+'.');
console.log("传进一个参数:"+num);
}
}
/*
* 上面那个对象 有三个属性 age name say
* 有一个属性是方法 如 say
* 如果我们想读他的age属性 直接console.log(person.age);
* 如果我们要添加一个新的属性 如job person.job = "coder";
* if we want to change the property(age),just as : person.age = 29;
* 对于第三个Say 里面用到了this 这个关键字,以后会单讲,在这里你可以理解成 this 就是person 这个对象 但是不建议直接用person
*
* 问题来了:设置person一个新属性 其为一个方法,这个方法存一个数字的参数,这个参数为你想设定的年龄。将person的年龄修改掉,
* 修改后再 调用 person的say 方法。
* */
//person.say(5);
/*
* 以上知识点
* 对象 对象属性的修改 对象方法的调用 对象中的this 函数参数
* */
function Person(option) {
this.age = option.age;
this.name = option.name;
this.say = function () {
console.log ("my name is "+this.age+",my name is "+this.name+'.');
//console.log ("my name is "+person.age+",my name is "+person.name+'.');
}
}
var person = new Person({age:18,name:'wang'});
person.say();
//为什么我们不如下写?
function Person1(age,name) {
this.age = age;
this.name = name;
this.say = function () {
console.log ("my name is "+this.age+",my name is "+this.name+'.');
//console.log ("my name is "+person.age+",my name is "+person.name+'.');
}
}
/*
* 你可以想如果有非常多的参数名称,而我们又忘了参数的顺序
* */
var person2 = new Person1('wang',18);
person2.say();//这会输出什么?你会发现 name 与 age 赋值给反掉了;而用对象则不存在这个问题
//但是如果用对象,我们想给他加一个默认值该怎么做呢?
function Person3(option) {
option = option || {};
this.age = option.age || 99;
this.name = option.name || 'congjun';
this.say = function () {
console.log ("my name is "+this.age+",my name is "+this.name+'.');
//console.log ("my name is "+person.age+",my name is "+person.name+'.');
}
}
var person3 = new Person3();
person3.say();//你自己测试一下会输出什么?
/*
* 注意 || 这是一种 一元判断 拿 option = option || {};
* 来说 对于等号右边 如果option存在,就把option 赋值给等号左边的option 如果不存在 则把{}赋值给等号左边的option
* */
/*
* 上面的函数叫构造函数
* 函数名首字母要大写;使用的时候 前面要加一个new关键字
* 构造函数内的this 指向构造函数本身
* 普通 函数呢?指向window
*
* 我们可以这个样子定义一个对象 var a = new Object(); 也可以 var a = {};
* 我们可以这个样子定义一个数组 var a = new Array(); 也可以 var a = [];
* 我们可以这个样子定义一个日期 var a = new Date(); 等等
*
* 虽然我们编程中 都采用后者,因为比较简单
* 但是你要知道,他们其实都是由构造函数而来
*
* var a = new Object();拿这句来说,a 与 new Object()之间有什么关系呢?
* a 是 new Object()实例化
*
* 注意如下的表述
*
* a 会有一个__proto__属性 而构造函数会有一个 prototype属性
* a 的__proto__ 会继承 其构造函数的 prototype属性
* 以上是最简单的对象继承。
* 但事情远没有结束
*
* 因为a 的构造函数 有可能会是 某个构造构造函数的 实例
* 而某个构造函数 还可能是其它构造函数的实例
* 这个样子一层层的存在一个继承关系
* 最顶端是什么呢?
* 那就是Object对象,到Object 就结束了
* 层层的继承像链一样,我们叫原形链
* 必须完全搞懂原型继承及原型链的定义。
*
* */
//第三天的题目 用构造函数的方法把第二天的题目做出来z
//主要是this 原型 与 原型链h
/*
* 再补充一点
*
* */
function Student() {
this.age = 55;
this.teacher = 'JS';
this.major = 'math';
}
Student.prototype.coderName = "congjun";
var student = new Student();
console.log(student.coderName);//这个coderName属性就是继承而来的
//下面的代码,要理解,对于for in循环不用特别关注,但是功能还有有一些重要
for(var i in student){
console.log("所有属性包含继承:"+i);
if(student.hasOwnProperty(i)){
console.log("本身自有属性:"+i);
}
}
</script>
</body>
</html>
0 0
- JS:原型、原型链、继承
- js 原型继承
- js原型、继承
- JS原型继承实例
- js原型、继承
- js原型、继承
- js原型、继承
- js原型、继承
- js的原型继承
- JS 原型继承
- 再谈js原型继承
- js原型、继承
- 【JS】原型链继承
- js原型继承
- js原型、继承
- js原型、继承
- js原型继承
- js 继承【 原型(prototype)】
- Failed to read artifact descriptor for com.fasterxml.jackson.core:jackson-databind:jar:2.9.0-SNAPSHO
- HashMap的工作原理
- 数组方法 总结
- Python学习之[5]——pass语句
- JVM内存模型和性能优化
- js继承 原型
- Apache Thrift
- [Android]RecyclerView
- 如何让Tomcat只运行server.xml中指定的Web应用
- SVN与GIT的区别
- Tomcat部署Web应用方法总结
- 机器学习(周志华西瓜书) 参考答案 总目录
- 简单使用Git--利用Git GUI来使用GitHub远程仓库
- Java EE 应用中的事务