文档章节

javascript 原型上的操作 区别

小张525
 小张525
发布于 2017/05/20 10:57
字数 351
阅读 12
收藏 0
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
	<meta charset="utf-8" />
    <script type="text/javascript" src="../jquery.js"></script>
    <script>
        
        var Book = function (id, name, price)
        {
            this.id = id;
            this.name = name;
            this.price = price;
        }


        var Book2 = function (id, name, price)
        {
            this.id = id;
            this.name = name;
            this.price = price;
        }


        // 在原型的基础上
        Book.prototype.display = function () {
            console.log(this.name);
        }


        // 直接替换原型对象
        Book2.prototype = {
            display: function ()
            {
                console.log(this.name);
            }
        }


        var _Book = new Book(1, 'javascript', 12);
        var _Book2 = new Book2(1, 'javascript', 12);

        console.log(_Book);
        console.log(_Book2);



        var Test = function () { };
        var _Test = new Test();
        console.log(_Test);


        // 如果在对象的原型上添加属性和方法, 那么他的constructor属性会指向到当前对象,
        console.log(_Book.constructor == Book);    // true
        console.log(_Book.constructor == Object);  // false;
        // 如果在直接替换原型对象,那么他的constructor属性会指向最原始的对象.
        console.log(_Book2.constructor == Object);  // true;
        console.log(_Test.constructor == Test);    // true;

        // 测试某个属性是否是自拥有的
        console.log("constructor" in _Test);  // true;
        console.log("constructor" in _Book2); // true;
        console.log(_Test.hasOwnProperty('constructor'));  // false 不是自拥有的属性,这个是继承过来的.
        console.log(_Book.hasOwnProperty('constructor'));  // false




        /*
            知识点总结:
            _Book:
            constructor:(id, name, price)
            display:()
            __proto__:Object


            _Book2:
            display: ()
            __proto__: Object


            1  在原型上追加方法时, 对象的构造函数是存在的,如果是替换原型对象,那么就会无构造函数,
            2  如果在原型上追加方法,那么他的构造函数是指向自己的,通过_Book,_Test的测试看到,
               如果直接替换原型对象,那么他的构造函数是指向object,
                
        */


    </script>
</head>
<body>

</body>
</html>

 

© 著作权归作者所有

共有 人打赏支持
小张525
粉丝 6
博文 103
码字总数 33503
作品 0
乌鲁木齐
程序员
私信 提问
每个JavaScript工程师都应懂的33个概念

摘要: 基础很重要啊! 原文:33 concepts every JavaScript developer should know 译文:每个 JavaScript 工程师都应懂的33个概念 作者:stephentian Fundebug经授权转载,版权归原作者所有...

Fundebug
10/30
0
0
JavaScript开发者应懂的33个概念

简介 这个项目是为了帮助开发者掌握 JavaScript 概念而创立的。它不是必备,但在未来学习(JavaScript)中,可以作为一篇指南。 本篇文章是参照 @leonardomso 创立,英文版项目地址在这里。 ...

大灰狼的小绵羊哥哥
10/22
0
0
第一章—JavaScript简介

一.①DOM:Document Object Model文件对象模型 ②AJAX:Asynchronous Javascript And XML异步Javascript和XML ③CSS,Cascading Style Sheets,级联样式表 ④ECMAScript(European Computer......

湖心亭看雪
2014/10/21
0
0
26个精选的JavaScript面试问题

译者按: 从各个平台精选整理出26道由浅入深的题目助你面试 原文: Top 26 JavaScript Interview Questions I Wish I Knew 译者: Fundebug 为了保证可读性,本文采用意译而非直译。另外,本文...

Fundebug
10/31
0
0
26个JavaScript面试题和答案

Q1:JavaScript 中的强制转型(coercion)是指什么? 难度:0 在 JavaScript 中,两种不同的内置类型间的转换被称为强制转型。强制转型在 JavaScript 中有两种形式:显式和隐式。 这是一个显...

大灰狼的小绵羊哥哥
10/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

css hack

浏览器的兼容性一直是个头疼的问题,使用“欺骗”技术可使各个浏览器效果一致,花了些时间整理了各个浏览器的HACK,主要包括IE系列和最新版本的Chrome、Safari、Firefox、 Opera,比较全面的...

kitty1116
13分钟前
0
0
zookeeper脑裂问题

一、为什么zookeeper要部署基数台服务器? 二、zookeeper脑裂(Split-Brain)问题 2.1、什么是脑裂? 2.2、什么原因导致的? 2.2、zookeeper是如何解决的? 一、为什么zookeeper要部署基数台...

tantexian
19分钟前
1
0
Spring事务传播行为详解

前言 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的...

码代码的小司机
29分钟前
2
0
Android设备通过fastboot刷入TWRP

方法一:通过fastboot刷入TWRP的方式 首先去TWRP官网下载TWRP安装文件https://twrp.me/Devices/ 1.进入bootloader adb reboot bootloader 也可在开机时,同时按住电源键+音量减,进入bootloa...

robslove
34分钟前
0
0
为何译为“东家机”和“宾客机”

学习过虚拟化、云计算的人大概都知道,并且都在自己的电脑上安装KVM,如下图所示: 什么情况?不过是在物理机的Windows 10上安装了VMware;在VMware上安装了Linux CentOS 7操作系统;又在其上...

大别阿郎
49分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部