Skip to content

t1r1/dz-js-basics

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

Домашнее задание: Js. Основы

new

Согласно спецификации http://es5.github.com/#x11.2.2 напишите функцию, которая реализует оператор new под Firefox или Хром.

Скелет функции должен быть следующим

/**
 * @param {Function} Constructor
 * @param {Array}    [args]
 *
 * @return {Object}
 */
function myNew(Constructor, args) {}

В качестве проверки на [[Construct]] используйте следующую функцию. Она не совсем точена, но из клиента [[Construct]] больше никак не проверить.

function isConstructor(func) {
    return typeof func === "function" && func.hasOwnProperty('prototype');
}

// isConstructor(String.prototype.match) === false
// isConstructor(String) === true

Напишите тест, который порывает все особенности этого алгоритма. Будет здорово если вы приложите ссылку на jsfiddle.net

==

Согласно спецификации http://es5.github.com/#x11.9.3 реализуйте The Abstract Equality Comparison Algorithm

Скелет функции должен быть следующим

/**
 * @param {Mixed} x
 * @param {Mixed} y
 *
 * @return {Boolean}
 */
function myEqual(x, y) {}

В качестве функции Type используйте слудующую

var allowedTypes = ["Object", "Undefined", "Null", "Boolean", "Number", "String"];
/**
 * @param {Mixed} x
 *
 * @return {String}
 */
function Type(x) {
    var type = Object.prototype.toString.call(x).replace(/^\[object\s|\]$/g, '');
    return ~allowedTypes.indexOf(type) && type || "Object";
}

В качестве функции проверки на отрицательный ноль используйте следующую

/**
 * @param {Number} x
 *
 * @return {Boolean}
 */
function isNegativeZero (x) {
    return x === 0 && (1 / x) === -Infinity;
}

Напишите тест, который порывает все особенности этого алгоритма. Будет здорово если вы приложите ссылку на jsfiddle.net

См. также: пост про домашние задания.

About

Домашнее задание: JS: Базовые знания

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published