JS学习笔记02-初识原型


<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
<style type="text/css">
</style>
</head>

<body>
<script type="text/javascript">
//◆ 所有对象都继承自Object.prototype,它在原型链中是最后一个。
Object.prototype.age = 1;
var obj1 = {};
console.log(obj1.age);
if (‘age‘ in obj1){
console.log(obj1.hasOwnProperty(‘age‘));//验证是否来自本地对象
}

/* ◆ 每个function都具有prototype属性,对象都有隐式的__proto__。
◆ 通过function实例化的对象,对象本身的__proto__指向function的prototype。
◆ 对象本身的constructor指向function。
*/
function f(){
this.age=2;
}
debugger;
var obj2 = new f();
console.log(obj2.__proto__===f.prototype);//true 对象本身的__proto__指向function的prototype
console.log(obj2.__proto__.__proto__===f.prototype.__proto__?
f.prototype.__proto__===Object.prototype:‘false‘);//true

console.log(obj2.constructor===f);//true //对象本身的constructor指向function
console.log(f.prototype.isPrototypeOf(obj2));//true 检测obj2是否是f生成的对象


//分解上面new创建的过程
var obj3 = {}; //创建一个空对象 obj3.__proto__===Object.prototype
obj3.__proto__=f.prototype; //使对象__proto__指向__prototype
f.call(obj3); //将f的this替换成obj3,然后再调用f函数.

console.log(obj3.__proto__===f.prototype);// true
console.log(obj3.constructor===f);// true
</script>
</body>

JS学习笔记02-初识原型

时间: 2024-11-10 14:18:44

JS学习笔记02-初识原型的相关文章

JS学习笔记02

学习新知识,探究新方法,是一个由"知器"-->"格物"-->"明理"-->"成道"依次演变的进化过程,需要循序渐进.由浅入深, 不过最终是否可以修炼成道骨仙风的"佛"家境界,则全凭个人的恒心.悟性和造化 百度和谷歌两大搜索引擎主页,表面看似简单,但内深藏玄机,其页面上的每一个像素点,用价值千金来形容,似乎也不为过.好了,下面我们用数据与事实说话,请看简单统计后的表格数据:  当用户打开网页

Node.js学习笔记 02 Implementing flow control

What is flow control? 和其它语言一样,Node.js 在代码编写时,如何组织代码,如何写出clean code都是不可避免的难点. 同时,由于Node.js的天然特性(异步,事件驱动),良好的代码组织就更为重要. 所谓的flow control指的是序列化的执行一个个node.js task的代码组织手段. 与其它语言一样,任务流可以被组织成两种(串行,并行)如下图: How to flow control? 一种方式是使用node.js 社区提供的各类第三方模块(),另一

【转】Backbone.js学习笔记(二)细说MVC

文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Backbone源码结构 1: (function() { 2: Backbone.Events // 自定义事件 3: Backbone.Model // 模型构造函数和原型扩展 4: Backbone.Collection // 集合构造函数和原型扩展 5: Backbone.Router // 路由

JS学习笔记-OO疑问之对象创建

问一.引入工厂,解决重复代码 前面已经提到,JS中创建对象的方法,不难发现,基本的创建方法中,创建一个对象还算简单,如果创建多个类似的对象的话就会产生大量重复的代码. 解决:工厂模式方法(添加一个专门创建对象的方法,传入参数避免重复) function createObject(name,age){ var obj =new Object(); //创建对象 obj.name = name; obj.age = age; obj.run = function(){ return this.nam

js学习笔记知识点

AJAX用法安全限制JSONPCORS面向对象编程创建对象构造函数原型继承class继承 AJAX 用法 AJAX不是JavaScript的规范,它只是一个哥们"发明"的缩写:Asynchronous JavaScript and XML,意思就是用JavaScript执行异步网络请求 在现代浏览器上写AJAX主要依靠XMLHttpRequest对象: 'use strict'; function success(text) { var textarea = document.getE

Wojilu学习笔记 (02)

使用RequireJS (1)整个页面,应该只有一个 <script src="" > 标签,并且放在页面底部,用来引入 RequireJS 和 main.js 文件 <script data-main="~js/main" src="~js/lib/require-jquery-wojilu.js?v=#{jsVersion}"></script> (2)在页面头部的 <head> 部分,增加一行

Node.js学习笔记【1】入门(服务器JS、函数式编程、阻塞与非阻塞、回调、事件、内部和外部模块)

笔记来自<Node入门>@2011 Manuel Kiessling JavaScript与Node.js Node.js事实上既是一个运行时环境,同时又是一个库. 使用Node.js时,我们不仅仅在实现一个应用,同时还实现了整个HTTP服务器. 一个基础的HTTP服务器 server.js:一个可以工作的HTTP服务器 var http = require("http"); http.createServer(function(request, response) { r

Vue.js学习笔记:在元素 和 template 中使用 v-if 指令

f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <script src="https://cdn.bootcss.com/vue/2.2.

【OpenGL 学习笔记02】宽点画线

我们要知道,有三种绘图操作是最基本的:清除窗口,绘制几何图形,绘制光栅化对象. 光栅化对象后面再解释. 1.清除窗口 比如我们可以同时清除颜色缓冲区和深度缓冲区 glClearColor (0.0, 0.0, 0.0, 0.0);//指定颜色缓冲区清除为黑色 glClearDepth(1.0);//指定深度缓冲区的清除值为1.0 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//指定要清除的缓冲区并清除 2.绘制几何图形 先要设置绘制颜色,