JavaScript prototype备忘

__proto__:所有对象都有的属性。

var obj = {};
console.log(obj.__proto__); //{}
var obj1 = new Object();
console.log(obj1.__proto__); //{}
var func = function() {};
console.log(func.__proto__); //[Function:Empty]

prototype:函数对象中的属性。

var obj = {};
var func = function() {};
console.log(func.prototype);  //{}
console.log(obj.prototype); //undefined

所有对象的root为object,object的__proto__为null

var obj = {};
console.log(obj.__proto__); //{}
console.log(obj.__proto__.__proto__); //null

var func = function() {};
console.log(func.__proto__); //[Function:Empty]
console.log(func.__proto__.__proto__); //{}
console.log(func.__proto__.__proto__.__proto__);//null

使用构造函数创建的对象中,__proto__为构造函数的prototype指向的对象

var Func = function() {};
Func.prototype.name = ‘f1‘;
console.log(Func.prototype); //{name:‘f1‘}
var obj = new Func();
console.log(obj.__proto__); //{name:‘f1‘}
console.log(Func.prototype==obj.__proto__); //true

实现继承时,__proto__的指向:dog1 instance->Dog.prototype->Animal.prototype->object->null

function Animal() {}
Animal.prototype.name = ‘animal‘;
function Dog() {}
Dog.prototype = new Animal();
Dog.prototype.height = 10;console.log(Animal.prototype); //{name:‘animal‘}console.log(Dog.prototype); //{height:10}

var dog1 = new Dog();
console.log(dog1); //{}
console.log(dog1.__proto__); //{height:10}
console.log(dog1.__proto__.__proto__); //{name:‘animal‘}
console.log(dog1.__proto__.__proto__.__proto__);//{} object
console.log(dog1.__proto__.__proto__.__proto__.__proto__);//null root
console.log(dog1.name); //animalconsole.log(dog1.height); //10

额,,刚学JavaScript,暂时就想到这么多。

  

时间: 2024-10-10 23:02:35

JavaScript prototype备忘的相关文章

Javascript备忘模式

使用备忘模式,利用了函数的自定义属性,先看一个例子 var test = function (){} test.myAttr = "attr"; 这样,就给test加上了一个自定义的属性,myAttr. 备忘模式,正式利用了这个方法,将已经运行过的结果存储起来,将函数接受到的参数作为key,将函数运行的结果作为value返回即可.代码如下 var myFunc = function (param) { if(!myFunc.cache[param]){ var result = {};

正则表达式备忘(基于JavaScript)

基于JS学习的正则表达式 备忘 e.g.匹配以0开头的三位或四位区号,以-分格的7或8位电话号码var reg1 = /^0\d{2,3}\-\d{7,8}$/;或var reg1 = new RegExp('^0\\d{2,3}\\-\\d{7,8}$') ; reg1.test('010-1234567');reg1.test('010-12345678');reg1.test('0531-1234567');reg1.test('0531-12345678'); 第一种写法更简洁! #使用

调试android chrome web page简明备忘

必备工具 adb tools.android chrome 先开启手机调试模式 adb forward tcp:9919 localabstract:chromedevtoolsremote 成功会提示 * daemon not running. starting it now on port 5037 * * daemon started successfully * 不成功的话用这个命令再试 adb kill-server 接着打开下面的链接,这里的9919是上面adb命令中指定的 http

【代码备忘】火狐浏览器插件xpi自动从网站下载安装的代码

欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 <!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&

ECMAScript 5(ES5)中bind方法简介备忘

一直以来对和this有关的东西模糊不清,譬如call.apply等等.这次看到一个和bind有关的笔试题,故记此文以备忘. bind和call以及apply一样,都是可以改变上下文的this指向的.不同的是,call和apply一样,直接引用在方法上,而bind绑定this后返回一个方法,但内部核心还是apply. 直接看例子: 1 2 3 4 5 6 7 8 9 10 11 12 var obj = {   a: 1,   b: 2,   getCount: function(c, d) {

JqGrid相关操作备忘 方法列表

JqGrid相关操作备忘 方法列表 1.获得当前列表行数:$("#gridid").getGridParam("reccount"); 2.获取选中行数据(json):$("#gridid").jqGrid('getRowData', id); 3.刷新列表:$(refreshSelector).jqGrid('setGridParam', { url: ''), postData: ''}).trigger('reloadGrid'); 4.选

Webstorm常用快捷键备忘(Webstorm入门指南)

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为“Web前端开发神器”.“最强大的HTML5编辑器”.“最智能的JavaSscript IDE”等.与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能.百度百科 软件名称: JetBrains WebStorm(java.html5开发工具) v8.0.5 官方英文版 软件大小: 140.7MB 更新时间: 2014-10-01 现将最常用的快捷键挑出来备

【ASP.NET】编程备忘:页面传值之returnValue

在ASP.NET页面间传值的方式有很多,大致归为URL传值.内置对象传值这两类.当然宽泛地讲大致有这么些: Form表单传值:GET.POST(QueryString.PostBackUrl) 内置对象:Cookie.Session.Application.Cache.Response.Redirect.Server.Transfer Context 隐藏域 静态变量 文件:web.config.Machine.config...... 注:严格地说文件并不能说成是页面间传值的一种方式.它和数据

W5500 图片嵌入STM32 FLASH笔记(备忘)

方法一:利用winHex软件将图片转为16进制数组存储在FALSH中 1 __root const char HDMV_HTML[]="<html>" 2 "<head>" 3 "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />" 4 "<!-- TemplateBeginEditable name='do