原型和原型链--构造函数
原型和原型链--构造函数
思考?
1.如何准确判断一个变量是数组类型
2.写一个原型链继承的例子
3.描述new一个对象的过程
4.zepto(或其他框架)中如何使用原型链
知识点:
1.构造函数
构造函数:一般函数为大写字母开头的都是构造函数,如下:
function foo(name,age){ this.name=name this.age=age //return this // 默认有这一行 } var f = new foo('l',20) ; //构造函数形成实例,可以创建多个对象;f是一个空对象,原型是foo // new 的时候,其实this变成一个空对象,再执行构造函数中的赋值操作,返回的对象便有了这些值
2.构造函数-扩展
var a={}其实是var a=new object()的语法糖
var a=[]其实是var a=new array()的语法糖
function foo(){}其实是var foo=new function()
3.原型规则和示例
原型是什么?
在javascript中原型是一个prototype对象,用于表示类型之间的关系。
规则:
1.所有的引用类型(数组、对象、函数),都具有对象特性,即可*扩展属性(除了"null"对象以外)
var obj={}; obj.a=100; var arr=[]; arr.a=100; function fn(){} fn.a=100;
2.所有引用类型都有一个_proto_(隐式原型)属性,属性值是一个普通的对象
console.log(obj._proto_); //隐式原型,都具有可扩展属性原则
3.所有函数都有一个prototype(显示原型)属性,属性值也是一个普通对象
console.log(fn.prototype); //显示原型
4.原型链
原型链是什么?
javascript万物都是对象,对象和对象之间也有关系,并不是孤立存在的。对象之间的继承关系,在javascript中是通过prototype对象指向父类对象,直到指向object对象为止,这样就形成了一个原型指向的链条,专业术语称之为原型链。
5.instanceof
instanceof用于判断引用类型属于哪个构造函数的方法
f instanceof foo //判断f这个引用类型是否属于foo构造函数,判断逻辑:f的_proto_一层一层往上,能否对应到foo.prototype
判断一个变量是否为"数组":变量名 instanceof array,如下代码:
var arr=[]; arr instanceof array //true typeof arr //object, typeof是无法判断是否是数组的
解题:
1.如何准确判断一个变量是数组类型
变量名 instanceof array
2.写一个原型链继承的例子
function name(){ this.name=function(){ console.log("killua") } } function firstname(){ this.firstname=function(){ console.log("l") } } name.prototype = new firstname(); var he = new name(); he.name(); //"killua" he.firstname(); //"l"
3.描述new一个对象的过程
4.zepto(或其他框架)源码中如何使用原型链
封装dom查询的例子
function elem(id){ this.elem = document.getelementbyid(id) } elem.prototype.html = function(val){ var elem = this.elem if(val){ elem.innerhtml = val return this //链式操作 }else{ return elem.innerhtml } } elem.prototype.on = function(type, fn){ var elem = this.elem elem.addeventlistener(type, fn) //addeventlistener() 方法用于向指定元素添加事件句柄 } var p1 = new elem('p1') //console.log(p1.html()) p1.html('
hello killua
').on('click',function(){ alert('clicked') }).html('javascript
') r -p$slave_pass -e "stop slave" date=`date +%y%m%d` # todo mkdir -p $bck_dir $bin_dir/mysqldump --opt -u$db_user -p$db_pass $db_name \ > $bck_dir/db1__$date.sql #start slave 开启主从 #$bin_dir/mysql -u$slave_user -p$slave_pass -e "start slave" 删除前两天的备份 #!/bin/sh find /data/backup/mysqlbackup -mtime +1 -name "db1__*" -exec rm -f {} \; find /data/backup/mysqlbackup -mtime +1 -name "db2__*" -exec rm -f {} \;上一篇: 用PHP和ACCESS写聊天室(十)
下一篇: 如果的事情