后边二个技术员面试题汇总,创造对象的四种方

2019-10-04 23:13栏目:人才招聘
TAG:

JavaScript 创建对象的七种方式

2017/06/20 · JavaScript · 对象

原文出处: Xuthus Blog   

JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以创建单个对象,显然这两种方式会产生大量的重复代码,并不适合量产。接下来介绍七种非常经典的创建对象的方式,他们也各有优缺点。

图片 1

JS 中原型和原型链深入理解

2018/05/05 · JavaScript · 原型

原文出处: erdu   

首先要搞明白几个概念:

  1. 函数(function)
  2. 函数对象(function object)
  3. 本地对象(native object)
  4. 内置对象(build-in object)
  5. 宿主对象(host object)

前端工程师面试题汇总

2016/06/24 · 前端职场 · 3 评论 · CSS, HTML5, Javascript

原文出处: @markyun   

工厂模式

function createPerson(name, job) { var o = new Object() o.name = name o.job = job o.sayName = function() { console.log(this.name) } return o } var person1 = createPerson('Jiang', 'student') var person2 = createPerson('X', 'Doctor')

1
2
3
4
5
6
7
8
9
10
11
function createPerson(name, job) {
  var o = new Object()
  o.name = name
  o.job = job
  o.sayName = function() {
    console.log(this.name)
  }
  return o
}
var person1 = createPerson('Jiang', 'student')
var person2 = createPerson('X', 'Doctor')

可以无数次调用这个工厂函数,每次都会返回一个包含两个属性和一个方法的对象

工厂模式虽然解决了创建多个相似对象的问题,但是没有解决对象识别问题,即不能知道一个对象的类型

函数

function foo(){ } var foo = function(){ }

1
2
3
4
5
6
function foo(){
    
}
var foo = function(){
    
}

前者为函数声明,后者为函数表达式。typeof foo
的结果都是function。

目录

  1. HTML部分
  2. CSS部分
  3. JavaScript部分
  4. 其他问题

构造函数模式

function Person(name, job) { this.name = name this.job = job this.sayName = function() { console.log(this.name) } } var person1 = new Person('Jiang', 'student') var person2 = new Person('X', 'Doctor')

1
2
3
4
5
6
7
8
9
function Person(name, job) {
  this.name = name
  this.job = job
  this.sayName = function() {
    console.log(this.name)
  }
}
var person1 = new Person('Jiang', 'student')
var person2 = new Person('X', 'Doctor')

没有显示的创建对象,使用new来调用这个构造函数,使用new后会自动执行如下操作

  • 创建一个新对象
  • 这个新对象会被执行[[prototype]]链接
  • 这个新对象会绑定到函数调用的this
  • 返回这个对象

使用这个方式创建对象可以检测对象类型

person1 instanceof Object // true person1 instanceof Person //true

1
2
person1 instanceof Object // true
person1 instanceof Person //true

但是使用构造函数创建对象,每个方法都要在每个实例上重新创建一次

函数对象

函数就是对象,代表函数的对象就是函数对象

官方定义, 在Javascript中,每一个函数实际上都是一个函数对象.JavaScript代码中定义函数,或者调用Function创建函数时,最终都会以类似这样的形式调用Function函数:var newFun = new Function(funArgs, funBody)

其实也就是说,我们定义的函数,语法上,都称为函数对象,看我们如何去使用。如果我们单纯的把它当成一个函数使用,那么它就是函数,如果我们通过他来实例化出对象来使用,那么它就可以当成一个函数对象来使用,在面向对象的范畴里面,函数对象类似于类的概念。

var foo = new function(){ } typeof foo // object 或者 function Foo (){ } var foo = new Foo(); typeof foo // object

1
2
3
4
5
6
7
8
9
10
11
12
13
var foo = new function(){
    
}
typeof foo // object
 
或者
 
function Foo (){
    
}
var foo = new Foo();
 
typeof foo // object

上面,我们所建立的对象

HTML

  • Doctype作用?严格模式与混杂模式如何区分?它们有何意义?
  • HTML5 为什么只需要写 <!DOCTYPE HTML>?
  • 行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
  • 页面导入样式时,使用link和@import有什么区别?
  • 介绍一下你对浏览器内核的理解?
  • 常见的浏览器内核有哪些?
  • html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
  • 简述一下你对HTML语义化的理解?
  • HTML5的离线储存怎么使用,工作原理能不能解释一下?
  • 浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?
  • 请描述一下 cookies,sessionStorage 和 localStorage 的区别?
  • iframe有那些缺点?
  • Label的作用是什么?是怎么用的?(加 for 或 包裹)
  • HTML5的form如何关闭自动完成功能?
  • 如何实现浏览器内多个标签页之间的通信? (阿里)
  • webSocket如何兼容低浏览器?(阿里)
  • 页面可见性(Page Visibility)API 可以有哪些用途?
  • 如何在页面上实现一个圆形的可点击区域?
  • 实现不使用 border 画出1px高的线,在不同浏览器的Quirksmode和CSSCompat模式下都能保持同一效果。
  • 网页验证码是干嘛的,是为了解决什么安全问题?
  • tite与h1的区别、b与strong的区别、i与em的区别?

版权声明:本文由ag真人发布于人才招聘,转载请注明出处:后边二个技术员面试题汇总,创造对象的四种方