6-1通过原型继承创建一个新对象

来源:互联网 发布:win10录屏软件 编辑:程序博客网 时间:2024/05/16 07:33

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
function inherit(p){   //创建一个函数接收一个参数p p为一个对象
 if(p == null) throw TypeError(); // p为空抛出错误 对象为空不接收任何属性和方法
 if(Object.create)               //检查有没有Object.create方法存在
  return Object.create(p);       //如果存在 返回Object.create(p)给函数 因为Object.create(p) 创建一个新对象 新对象的属性继承参数p对象的属性 函数继承参数p对象的属性
 var t = typeof p;  //参数p对象的类型 赋值给变量t
 if(t !== "object" && t !== "function") throw TypeError(); //如果不是类型不是对象 并且 类型不是一个构造函数 例如 function aa(){} 因为构造函数本身是对象 原型是构造函数aa.prototype属性的值
 function f(){}; //创建一个构造函数
 f.prototype = p; //构造函数f的原型就是f.prototype属性的值p f属性继承原型属性 所以就继承p对象的属性 
 return new f();  //返回创建和初始化的新对象 
}
var o = {x:13};
document.write(inherit(o).x); //函数inherit(o)继承对象o的属性x
/*
 函数inherit(p)的返回值就是一个新对象 新对象的原型属性是参数p 对象的属性都继承原型属性prototype 因为新对象的原型型属性prototyp
 的值是p对象 所以新创建的对象的属性继承自参数对象的属性
*/
</script>
</head>

<body>
 
</body>
</html>

0 0
原创粉丝点击