前端面试之---javascript原型
来源:互联网 发布:js math.pow 编辑:程序博客网 时间:2024/05/22 08:19
知识点
构造函数
function Foo(name,age) { this.name = name; this.age = age; this.class = 'class -1'; //return this; } var f = new Foo('zhangsan',20);// var f1 = new Foo('lisi',21);
构造函数-扩展
原型规则和实例
5条原型规则是理解原型链的基础
所有的引用类型(除null外)都可以自由扩展属性
所有的引用类型都有一个_proto_属性,叫隐式原型。属性值是一个普通的对象
所有的函数,都有一个prototype属性,叫显式原型。属性值是一个普通的对象
所有的引用类型的_proto_属性,指向它的构造函数的prototype属性值;
当试图得到一个对象的某个属性时,如果没有,会向它的_proto_中找。即去它的构造函数的prototype中找。
var obj = {}; obj.a = 100;var arr = []; arr.b = 200;function fn() { }fn.a = 100;console.log(obj.__proto__);console.log(arr.__proto__);console.log(fn.__proto__);console.log(fn.prototype);console.log(obj.__proto__ === Object.prototype);
function Foo(name, age) { this.name = name;}Foo.prototype.alertName = function () { console.log(this.name)}var f = new Foo('zhangsan',20);f.printName = function () { console.log(this.name)}f.printName();f.alertName();
f.toString();
//对象自身没有toString,先去f的隐式原型中找,即Foo.prototype中找;//Foo.prototype也没有,再去Foo.prototype的隐士原型中找。,即Foo.prototype的构造函数的prototype,//即Function.prototype中找。即Object中找。
//f.__proto__.__proto__
var item ;for(item in f){ if(f.hasOwnProperty(item)){ //高级浏览器已经在for in中屏蔽了来自原型的属性 //建议加上这个判断,保证程序的健壮性 console.log(item); }}
原型链
Instanceof
如何准确判断一个对象是数组类型
写一个原型链继承的例子
这样写会特别low 要写一个实战的例子
function Animal() { this.eat = function () { console.log("animal eat"); }}function Dog() { this.bark = function () { console.log("dog bark") }}Dog.prototype = new Animal();var hashiqi = new Dog();
描述new一个对象的过程
创建一个新对象
This指向这个对象
执行代码,对this赋值
返回this
Zepto或其他框架源码是如何实现原型链的
没有全看,重点看,需要就看
function Elem(id) { this.elem = document.getElementById(id) } Elem.prototype.html = function (val) { var elem = this.elem; if(val){ elem.innerHTML = val; return this; } else{ return elem.innerHTML; } } Elem.prototype.on = function (type,fn) { var elem =this.elem; elem.addEventListener(type.fn); return this; } var div1 = new Elem('detail-page');// console.log(div1.html()); div1.html("<p>hello world</p>>").on('click',function () { alert("_clicked_") }).html('<p>javascript</p>>');
阅读全文
0 0
- 前端面试之---javascript原型
- 前端JavaScript面试技巧
- 前端面试-JavaScript篇
- 前端面试JavaScript编程
- web前端之悟透JavaScript三:JavaScript真经(原型)
- web前端面试-------javaScript基础知识点之数据类型
- 前端面试系列之---javascript基础和数据类型
- 前端面试之---javascript作用域和闭包
- JavaScript对象之原型
- JavaScript之原型模式
- JavaScript之原型
- JavaScript之原型
- javascript之原型
- Javascript之原型模式
- 前端面试之cookie
- 前端JavaScript面试技巧全套
- 前端面试总结之前端性能优化( http css JavaScript images HTML)
- javascript之原型和原型链
- LeetCode 668. Kth Smallest Number in Multiplication Table
- css---flex布局中,如何响应式 得水平垂直居中?flex子元素左右 上下居中
- 面向对象相关问题
- Duplicate entry '??…???' for key 'cname' Query:
- 关于c++空指针0/NULL/nullptr三者的演变
- 前端面试之---javascript原型
- fatal: the remote end hung up unexpectedly (curl 56 OpenSSL SSL_read:SSL_ERROR_sysCALL)
- 大数据协作框架之Oozie
- python安装与初步使用教程
- HorizontalTabhost
- 关于将微博上视频保存在电脑本地的方法汇总
- BP神经网络的Python简单实现
- CyclicBarrier
- ④设计模式之多例模式