js中使用prototype后对象问题

b和c有什么不同?
在浏览器的调试页面,c显示为F,b显示为Person
var Person = function(){
this.name = "人";
this.age = "三百万";
}
var Boy = function(){
this.name = "Bob";
this.age = "18";
}
var F = function(){}
F.prototype = Person.prototype;
var c = new F();
var b = Boy.prototype = new F();

0

1个回答

c和b本质上没有什么不同,至于c显示为F,b显示为Person,只是谷歌浏览器的console控制台自行提取的类名。只是用于在控制台显示给开发者看,实际在代码中是没法获取的。
对于不用类别的对象提取类名的方式也不同。
用new创建的对象,就提取构造函数的函数名,如果构造函数是匿名函数,则提取匿名函数第一次赋值的变量名。
如果对象是一个函数的prototype,就提取prototype.constructor属性指向的函数名,同样如果取是匿名函数,则提取匿名函数第一次赋值的变量名。

1
weixin_43800329
weixin_43800329 好的,多谢。
13 天之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的。是时候展现真正的技术了!
其他相关推荐
js对象中原型(prototype)的使用方法、替换以及注意事项
Title function Person(name, age, gender) { this.name = name; this.age = age; this.gender = gender; } //----------------------原型的使用方法--
JS中的prototype原型
JS中的phototype是JS中比较难理解的一个部分   本文基于下面几个知识点:   1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。我们称B的原型为A。   2 javascript的方法可以分为三类: a 类方法 b
JavaScript中使用prototype来扩展对象,举例
原型方式:使用prototype来扩展对象  Object.prototype.method=function; /** * 给String类型增加equals函数 */ String.prototype.equals=function(str){ return this==str.toString(); }; /** * 给String增加trim()函数 */ String
js 为prototype的赋值在new实例之后的问题
(最近准备考研,写得实在不勤快了= =JavaScript高级程序设计(第3版)第156页讲了原型的动态性。 即实例与原型之间的松散连接关系使得原型的属性改动可以反映在实例上。 所谓松散连接关系,即实例与原型的连接是一个指针。当搜索实例的属性时,会先搜索实例本身属性,如果没有,则在搜索原型的属性。后面则讲了一种特殊情况,即在new实例之后,再进行prototype的赋值(重写),会破坏这种动态性
js继承中关于对象字面量重写原型
function SuperType(){ this.property=true; } SuperType.prototype.getSuperValue=function(){ return this.property; }; function SubType(){ this.subproperty=false; } //继承了SuperType SubType.prot
用原生js写一个插件,为什么使用.prototype时,this上面的变量不能共享
如题:为什么用原生js写一个插件,为什么使用.prototype时,this上面的变量不能共享? 案例来自一个小羊肖恩的案例,很简单,所以选择使用原生js来写,而遵循一般写插件的原则,我把涉及到的函数都写在了原型链prototype上,此时出现一个问题,原型链上的方法获取不到构造函数上定义的值。(console时输出undefined) 为什么会这样? 后来我意识到,在学习jQuery时,有...
prototype详解及prototype、new之间的关系
1.prototype解释 在JavaScript中,prototype对象是实现面向对象的一个重要机制。 每个函数就是一个对象(Function),函数对象都有一个子对象 prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。 在通过new创建一个类的实例对象的时候,prototype对象的成员都成为实例化对象的成员
JS面向对像编程四—— prototype 对象
prototype对像
自定义对象、prototype原型属性
一、自定义对象 1、在javascript没有类的概念,只要有函数即可创建对象。2、自定义对象的格式: 方式1: 使用无参的函数创建对象。 方式2:使用带参的函数创建对象。this表示当前对象。 方式3: 使用Object函数创建对象,javascript默认创建了一个 function Object(){}。//类似方式1 var p = new Object(); p.id =
js中的prototype和基于prototype的继承总结
与其他编译语言的继承相比,javascript也有一套继承实现方式,即使用prototype原型及其链的方式。1、我们先用一个简单的例子先理解原型链, (http://img.blog.csdn.net/20160518145959323)function superClass(){ this.value = “super”; }superClass.prototype.getSuper
用实例谈谈javascript中的this和prototype
js语言应用中,面向对象的思想非常
为JS的Date对象扩展几个好用的prototype函数(加上若干个月、等)
几个经常被用到的函数,又没用被Date对象定义的,自己定义一下,方便使用: - 获取Date对象的ISO格式的日期部分(去掉时分秒) - 加减若干天 - 加上若干个月(需要处理进位等若干复杂情况) - 返回下个月的第一天、最后一天
Javascript Math对象和自定义对象
Math是JavaScript的工具对象,用于常见的数学运算 自然对数和圆周率 属性E PI,分别表示自然对数和圆周率PI document.write(Math.E); document.write(""); document.write(Math.PI); 绝对值 方法 abs 取绝对值 document.write(Math.abs(-1)); 最小最大
JS经常出在面试的问题,闭包,prototype和constructor
昨天面试,面试官问我JS好不好,我说非常好。面试官说那好,闭包是什么,跟我介绍一下吧~ 说实话,这不是我第一次碰到这样的问题。至少是第三次,然而我仍然没有正视过这个问题。我正视了一些C++问题比如说虚函数表,虽说还有缺憾,但是这个问题没有,当时心里转了一圈,知道这篇博文应该写下来,并且分享一下了。 1 有关JS本身的语言特性 JS是一种面向原型的语言,说道原型,我开始以为有多
JavaScript prototype 属性和 对象属性、类属性的区别
在JavaScript中, 对象可以带属性,对象的原型(pototype)也可以带属性,类(Function对象)也可以带属性,那么这些属性有什么区别呢? 1、实验条件 首先声明一个类 var my fun = function(){} (1)类的属性 myfun.name = 'Zhangsan'; (2)原型的属性 myfun.prototype.address = '北京东
javascript 定义对象、方法和属性的使用方法(prototype)
prototype 定义和用法 prototype 属性使您有能力向对象添加属性和方法。 语法 object.prototype = { 函数名 : function(){} } object.prototype.name=value javaScript的中类和对象 定义类 例1: //第一种定义方式 var people = function(na...
浅谈JS中对象、函数的__proto__属性和prototype对象
JS中每个对象都会有__proto__属性,默认为Object,例如: var a={};//这里对象a的__proto__属性就是Objectproto属性的作用主要是用来确定当前对象的继承者,在当前对象找不到指定的属性和对象时,会去proto属性指定的对象中寻找,之后依次类推直到找完所有继承或找到要找的属性为止js的函数会有一个默认的prototype对象,这个prototype对象用来指定函数
JS中的prototype属性实现继承
在JS中没有类的概念,继承是通过对象和对象之间实现的。其中主要是利用prototype属性来实现的。 函数中的prototype属性,又叫原型对象。构造函数可以通过prototype属性来添加函数。这样做到代码的简单性,避免冗余代码。还可以通过prototype属性来实现继承。 例如: function Person(name,age,email) { this.us
js中类定义函数时用prototype与不用的区别
首先来看一个实例: function ListCommon2(first,second,third) { this.First=function () { alert("first do"+first); } } //不加prototype的情况 ListCommon2.do1=function(first) { // thi...
JavaScript面向对象编程(5)重写prototype造成的混乱
本文分析了js原型的部分重写和完全重写的区别:部分重写的属性(或方法),重写后新老对象都可以用,完全重写的属性(或方法)只有新对象才能用;完全重写还会屏蔽掉以前的prototype属性; 分析了完全重写后,新建对象的构造器指向错误的问题,为理解通过原型完成继承做好准备。
给对象添加属性----Prototype原型对象
给对象添加属性 1 Object 对象:Object是所有对象的基础,任何其他对象都是从Object扩展而来,或者说是继承。这一切都是由“原型”来完成。 2 原型对象:原型是对象的一个属性,也就是prototype内部的属性,每个对象都有这个内部属性,它本身也是一个对象。 3 得个对象都不直接包含具体属性。 4 那怎样给一个对象添加属性呢?  5 共享! -----通过原型进行属性共享。
Array原型属性在for in循环中的"问题"
因为对JavaScript不熟,原型、原型链之类的概念也不是很懂,所以这篇只是随便记下来这个称不上"问题"的现象 直接上图说明: 按目前的个人理解,大致是通过.prototype.xxx,向原型中新增了一个属性my_test,这个属性的值是mxmxz 新定义的Array对象arr,就继承(暂时认为这个词好像合适一些)了这个属性my_test 但只有用for in循环
JS prototype与__proto__的联系与区别
写在前面 这篇文章我的目的是试图讲清楚prototype与__proto__。很多人也许和我一样,很困扰于这两个东西究竟是干啥的,网上的各种资料也是讲的云里雾里,傻傻分不清楚。今天我就来尝试把它们说清楚。 JavaScript里没有类的概念 首先必须明确这一点,如果你学过Java之类的面向对象语言,你肯定熟悉类的概念,在面向对象语言的逻辑里,我们要先设计类(Class),然后再把
简单理解js的prototype属性
科技优家 2016-11-29 01:16 在进入正文之前,我得先说说我认识js的prototype这个东西的曲折过程。 百度js的prototype的文章,先看看,W3School关于prototype的介绍: 你觉得这概念适合定义js的prototype这个东西吗?你是否也认为prototype是一个object对象的属性呢?是的话,请认真认真看我这篇文章,因为这篇文章会毁灭
js中prototype的陷阱
原型陷阱 //当我们对原型对象执行完全替换时,可能会触发原型链中某种异常 //prototype.constructor属性是不可靠的 function Dog(){ this.tail=true; } var benji=new Dog(); var rusty=new Dog(); Dog.prototype.say=function(){ return "
js面向对象prototype
在JavaScript中,数组、函数、正则表达式都是对象;而数字、字符串和布尔值则是对象中的构建,不可修改。 从广义上来说,一个对象可以包含属性,属性被定义成键值对。例如: var nothing = {}; var author = { firstname:"C", lastname:"Douglas", book:{ title:"javaScr...
对象的创建、使用及向String对象添加方法(prototype的使用)
prototype 属性使您有能力向对象添加属性和方法。 语法 object.prototype.name=value //对象的定义,使用(名片示例) function Card(name, address, work, home){ this.name = name; this.address = address; this.work = work;
.prototype 属性使您有能力向对象添加属性和方法。
在本例中,我们将展示如何使用 prototype 属性来向对象添加属性:<script type="text/javascript"> function employee(name,job,born) { this.name=name; this.job=job; this.born=born; } var bill=new employee("Bill Gates","Engin...
prototype 属性使您有能力向对象添加属性和方法。
定义和用法 prototype 属性使您有能力向对象添加属性和方法。 语法 object.prototype.name=value 实例 在本例中,我们将展示如何使用 prototype 属性来向对象添加属性: function employee(name,job,born) { this.name=name; this.job=job; this.born=b
js中setTimeout的this指向问题
周五一下午,在公司闲来无事,想起之前面试的一道js题,居然还是机试,紧张的不行反正当时是没有做出来的,就随手拍一张照以便回来后自己好好学学,当时面试官面带微笑的跟我说先回去等通知吧,面试的结果可想而知了 foo=function(){ this.myName="Foo function"; }; foo.prototype.sayHello= function...
用新对象替换prototype属性不会更新以前的实例
我们可能会认为在任何时候完全替换prototype属性,并且所有的实例都将更新,这是不正确的。创建一个实例时,该实例将在实例化时被绑定至‘刚完成的’原型。提供一个新对象作为prototype属性不会更新已创建实例和新原型之间的连接。但是要记住,可以更新或添加最初创建的原型对象,这些值仍连接至第一个实例。如下面一段代码:<!DOCTYPE html> <html lang="en"...
js中的prototype有什么作用?
1、 prototype对象是实现面向对象的一个重要机制。每个函数也是一个对象,它们对应的类就是 function,每个函数对象都具有一个子对象prototype。Prototype 表示了该函数的原型, prototype表示了一个类的属性的集合。当通过new来生成一个类的对象时,prototype对象的属 性就会成为实例化对象的属性。 下面以一个例子来介绍pr
javaScript 面向对象--封装和prototype属性
一般面向对象的语言都具有三大特征,封装、继承,多态,例如像java 和c++。但是javaScript它可以说不是完全的面向对象的语言,因为它没有类的概念,但是它又是面向对象的,因为它可以封装属性和方法,并且也可以实现继承。 1、字面量模式 字面量的模式来创建一个对象 var person = { name : 'wzj', age : 25 } console.log(p...
JS中Array方法中常用方法五:Array.prototype.push()
Array.prototype.push()添加一个或多个元素到数组的末尾,并返回数组新的长度(length 属性值)。 语法:arr.push(element1, ..., elementN) 举例如下: //(1)添加元素到数组 var sports = ["soccer", "baseball"]; var total = sports.push("football", "sw
js中利用prototype给类添加方法
1.如何定义一个简单的类? 以下是一个没有任何属性和方法的类的定义:function MyClass(){};你可能会想,这不就是个简单的函数声明?没错,这个函数就是一个类的定义的实现。如何使用这个类呢?看下面的代码:var cls1 = new MyClass();这样,利用new就可以生成MyClass的一个实例了。所以在js中可以说函数就是类,类就是函数。2.给类增加属性和方法functio
由一道js题探讨构造函数、prototype和__proto__之间的关系
今天在牛客上看到这样一个题:var F = function(){}; Object.prototype.a = function(){}; Function.prototype.b = function(){}; var f = new F();问:能否通过f取到方法a,方法b?在git上看到有人画了这么一个图: 你如果理不清prototype,_proto _,construcor这些概念和关
JavaScript中如何使用原型方法--prototype
JS中的phototype是JS中比较难理解的一个部分   本文基于下面几个知识点:   1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。我们称B的原型为A。   2 javascript的方法可以分为三类: a 类方法 b
再说说__proto__和prototype以及js的继承
1.proto和prototype JS中的原型链已经是一个老生常谈的问题,毕竟也是JS 这门语言的特色之一了。 首先“万物皆对象“,虽然这句话一直有争议,但是有它的道理的,null类型这些的争论这里就不说了。 对象中有个属性proto,被称为隐式原型,这个隐式原型指向构造改对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的属性和方法。这个实例可能是如图中的new Foo...
JavaScript中数组Array.prototype的常用的方法总结
Array构造函数的API,我们可以通过控制台打印Array.prototype可以知道有以下这些方法。这是Array的原型对象的所有方法,对数组而言是可以继承所有的这些方法的: 接下来,我们就以12个比较常见常用的API开始说起: 1. join()  将数组转化为字符串,并且以某个分隔符进行连接,默认是使用的逗号“ , ” var arr1=[1,2,3]; consol
vue.js学习笔记之prototype
javascript中有prototype属性,prototype可以给对象动态的添加属性或者方法,如:     function student(stuname,age,classname){         this.stuname = stuname;         this.age = age;         this.classname = classname;